当前位置:编程学习 > C#/ASP.NET >>

cooike 与Form验证的关系

Form验证会向客户端写一个cookie,客户端再访问页面的时候会把cookie一起发送。
有几个问题不明白
1, 服务器端收到cookie是怎么解析的?解析的时间,解析后的内容是什么。如果没有解析这一过程,服务器是如何知道客户端已经经过验证了?IsAuthenticated是怎么决定的
2, 服务器端是什么时候向客户端写cookie的? 在登陆成功的时候向客户端写,对登陆成功后的请求,服务器应答的时候会写吗?
  假设不写,那么当把cookie过期时间设置很短,会不会发生几乎每次访问都需要重新登陆,让服务器发送cookie?
3, 使用ajax的方式 向服务器提交登陆请求,怎样在客户端生成带有验证票据的cookie?

请教了,越详细越好,能说明理由就更好了 --------------------编程问答-------------------- 构建基于forms的验证机制过程如下: 
1,设置IIS为可匿名访问和asp.net web.config中设置为form验证 
2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用) 
3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储 
  角色到票中,如: 
  FormsAuthentication.SetAuthCookie(Username,true | false) 
  cookies保存时间: 
  HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1) 
  如果需要存储角色,采用: 
 FormsAuthenticationTicket authTicket = new 
 FormsAuthenticationTicket( 
            1, // version 
            txtUserName.Text, // user name 
            DateTime.Now, // creation 
            DateTime.Now.AddMinutes(20),// Expiration 
            false, // Persistent 
            roles ); // User data 
  roles是一个角色字符串数组 
  string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密 

  存入Cookie 
  HttpCookie authCookie = 
  new HttpCookie(FormsAuthentication.FormsCookieName, 
  encryptedTicket); 

  Response.Cookies.Add(authCookie); 

4,在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用 
  票创建IPrincipal对象并存在HttpContext.User中 
  代码: 
  HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; 
  FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);//解密 
  string[] roles = authTicket.UserData.Split(new char[]{';'});//根据存入时的格式分解,;或|.... 
  Context.User = new GenericPrincipal(Context.User.Identity, Roles);//存在HttpContext.User中 

5,需要对某些页面进行角色控制,有两种方法: 
 5.1,web.config中加 
    <location path="EditPost.aspx"> 
 <system.web> 
  <authorization> 
                        <allow roles="RoleName" /> 
   <deny users="?" /> 
  </authorization> 
 </system.web> 
    </location> 
 5.2,把只能是某种角色访问的文件放在同一目录下,在此目录下添加一个web.config 
   <configuration> 
     <system.web> 
 <authorization> 
           <allow roles="RoleName" /> 
    <deny users="*" /> 
 </authorization> 
     </system.web> 
--------------------编程问答-------------------- http://www.aspxclub.com/l12/c_3689.html
这里更详细,内容很丰富,希望是你想要了解的。 --------------------编程问答-------------------- 简单的解释就是 cookie 是把客户端 用户登录时的一些信息 存放在客户端 以便下次再次登录时 方便 --------------------编程问答-------------------- 没有人说的明白吗?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,