今天刚刚接触了票据的知识,对于我这样的菜鸟都算不上的可以说是云里雾里--一点不假!倒也不是说知识有多么难,只是我对这个问题还没有多么深刻的认识!再加上刚刚接触.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);

相关文章:

  • 2021-11-18
  • 2022-01-15
  • 2021-10-07
  • 2021-04-20
  • 2022-01-02
  • 2021-04-30
  • 2021-12-26
  • 2021-10-11
猜你喜欢
  • 2021-09-28
  • 2021-09-01
  • 2021-09-18
  • 2021-12-07
  • 2021-07-02
  • 2021-10-12
  • 2021-11-01
相关资源
相似解决方案