在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie,我有几个问题:
- 这个cookie的目的是什么?
- 这个cookie的位置在哪里?
在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie,我有几个问题:
ASPXAUTH cookie用于确定用户是否已被验证身份。
至于cookie的位置,这取决于您使用的浏览器。如果您正在使用Firefox浏览器,可以通过点击“工具”->“选项”->“隐私”来查看cookie。然后向下滚动到域并展开它以查看cookie及其值。该值使用机器密钥(位于服务器的machine.config或web.config文件中)进行加密,因此在客户端查看cookie不会提供任何信息。您可以使用以下方法在服务器端对该值进行解密/查看:
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
其中authTicket
具有以下字段:
"ASPXAUTH基本上用于维护ASP.NET会话状态"的说法是不正确的。ASP.NET发出了一个完全不同的名为ASP.NET_SessionId的cookie来跟踪会话状态。
.ASPXAUTH cookie实际上并不能准确告诉您用户何时真正通过身份验证。 当用户退出应用程序时,.ASPXAUTH cookie将从浏览器中删除。 但是,如果在短时间内返回站点(表单身份验证cookie的超时时间),并使用以下方式编辑新的ASP.NET_SessionId cookie:
刷新后,您将能够假设已经重新获得认证用户的身份,而不必再次进行技术认证。(假设您在.ASPXAUTH加密认证字符串中存储了特定的超时时间)
一篇博客文章详细解释了该问题。一个可能的解决方案是将.ASPXAUTH与ASP会话结合使用。
Application_PostAuthenticateRequest
中,_Request.IsAuthenticated_为真,但是我的HttpContext.Current.Request.Cookies中没有***.ASPXAUTH***的值。我使用sessionState。 - Kiquenet