zoukankan      html  css  js  c++  java
  • FormsAuthentication初接触感触颇多

      今天刚刚接触了票据的知识,对于我这样的菜鸟都算不上的可以说是云里雾里--一点不假!倒也不是说知识有多么难,只是我对这个问题还没有多么深刻的认识!再加上刚刚接触.NET没有多久!对很多概念还是很容易混淆!

      今天学习中的看到了几篇参考博客,对我的帮助还是很大! 在这里分享一下!

      其实票据的概念不是很多,只是比较绕,总结起来无非就是创建多个验证,多个口令,多个服务端等,但是这样毕竟是比较繁琐的方法! 为了满足用户的体验,当然要求简单,内部工作繁琐也在所难免了! 参考博客中的讲述是Kerberos加密的原理! 这和票据的概念颇有些相似,原理大概都是一样的! 但是到了ASP.NET中,微软这个老江湖早就已经为我们做好了我们该做的,我们只需要简单的调用类库中所定义好的方法即可!

      票据可以很好的解决跨页面的请求处理! 之前老师给我们留下的问题是:如何实现跨页面的请求,而服务器是如何判断不同页面中的相同用户呢?

    对我这等初学者来说,还真是难住我了,请各位大侠不要见笑!

      现在貌似有点明白了:

      假设有一个用户A,请求了一个登录,随后页面就跳转到了自己的主页,然而页面间有了跨越,但是服务器却应该清楚记得新的页面中请求者还是原来的用户A,而应该在服务器端中的Dictionary中取出A所对应的数据!其实在这其中,当A第一次请求页面的时候,服务器已经分配给了用户A一个票据,存放在Cookie中,而之后每次用户A再请求页面的时候都要带上得到这个票据来证明自己的身份,这样每次请求,服务器都可以认出自己所分配出去的票据,这样就可以很好实现跨页面请求了!

    服务器做的工作:定义好ticket,随时准备发送给接收到请求request,并在下一次接收请求时检查该request是否有自己发布的票据

    if (cookie != null)//表示通过验证
                {
                    string cookieString = cookie.Value;//取得cookie中的票据的串

                    try
                    {
                        //转换为票据的实例
                        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookieString);

                        //检验票是否过期
                        if (!ticket.Expired)//没过期
                        {
                            name = ticket.Name;
                        }
                    }
                    catch (Exception ex)
                    {
                        //记录日志
                        System.Diagnostics.Trace.WriteLine("解密用户票据时出错,错误信息:{0}", ex.Message);

                    }

                }

    用户的工作:接收response时接到cookie,里面存储有服务器发来的ticket,转换为string识别!

    //将票据转换为串
                        string ticketString =//将票据转换为串
                        string ticketString =
                            FormsAuthentication.Encrypt(ticket);
                            FormsAuthentication.Encrypt(ticket);

  • 相关阅读:
    【转】最奇特的编程语言特征
    【原】mysql 视图
    自己动手写ORM框架(一):目标效果预览
    (二)Javascript面向对象:命名空间
    在JAVA中封装JSONUtils工具类及使用(一)
    .NET3.5中JSON用法以及封装JsonUtils工具类(二)
    (四)Javascript面向对象:继承
    自己动手写ORM框架(三):关系映射配置—Table属性
    (一)javascript面向对象:(2)类
    自己动手写ORM框架(二):AdoHelper支持多数据库操作的封装(1)
  • 原文地址:https://www.cnblogs.com/distance/p/1977611.html
Copyright © 2011-2022 走看看