问题描述
Form验证会向客户端写一个cookie,客户端再访问页面的时候会把cookie一起发送。有几个问题不明白1,服务器端收到cookie是怎么解析的?解析的时间,解析后的内容是什么。如果没有解析这一过程,服务器是如何知道客户端已经经过验证了?IsAuthenticated是怎么决定的2,服务器端是什么时候向客户端写cookie的?在登陆成功的时候向客户端写,对登陆成功后的请求,服务器应答的时候会写吗?假设不写,那么当把cookie过期时间设置很短,会不会发生几乎每次访问都需要重新登陆,让服务器发送cookie?3,使用ajax的方式向服务器提交登陆请求,怎样在客户端生成带有验证票据的cookie?请教了,越详细越好,能说明理由就更好了
解决方案
解决方案二:
构建基于forms的验证机制过程如下:1,设置IIS为可匿名访问和asp.netweb.config中设置为form验证2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用)3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储角色到票中,如:FormsAuthentication.SetAuthCookie(Username,true|false)cookies保存时间:HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)如果需要存储角色,采用:FormsAuthenticationTicketauthTicket=newFormsAuthenticationTicket(1,//versiontxtUserName.Text,//usernameDateTime.Now,//creationDateTime.Now.AddMinutes(20),//Expirationfalse,//Persistentroles);//Userdataroles是一个角色字符串数组stringencryptedTicket=FormsAuthentication.Encrypt(authTicket);//加密存入CookieHttpCookieauthCookie=newHttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);Response.Cookies.Add(authCookie);4,在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用票创建IPrincipal对象并存在HttpContext.User中代码:HttpCookieauthCookie=Context.Request.Cookies[FormsAuthentication.FormsCookieName];FormsAuthenticationTicketauthTicket=FormsAuthentication.Decrypt(authCookie.Value);//解密string[]roles=authTicket.UserData.Split(newchar[]{';'});//根据存入时的格式分解,;或|....Context.User=newGenericPrincipal(Context.User.Identity,Roles);//存在HttpContext.User中5,需要对某些页面进行角色控制,有两种方法:5.1,web.config中加<locationpath="EditPost.aspx"><system.web><authorization><allowroles="RoleName"/><denyusers="?"/></authorization></system.web></location>5.2,把只能是某种角色访问的文件放在同一目录下,在此目录下添加一个web.config<configuration><system.web><authorization><allowroles="RoleName"/><denyusers="*"/></authorization></system.web>
解决方案三:
http://www.aspxclub.com/l12/c_3689.html这里更详细,内容很丰富,希望是你想要了解的。
解决方案四:
简单的解释就是cookie是把客户端用户登录时的一些信息存放在客户端以便下次再次登录时方便
解决方案五:
没有人说的明白吗?