在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie.我有几个问题:
这个cookie的目的是什么?
这个cookie的位置是什么?
Todd.. 79
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发出一个完全不同的cookie,名为ASP.NET_SessionId,用于跟踪会话状态.
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发出一个完全不同的cookie,名为ASP.NET_SessionId,用于跟踪会话状态.
实际上.ASPXAUTH cookie并不能准确地告诉您用户何时进行了真正的身份验证.当用户退出应用程序时,将从浏览器中删除.ASPXAUTH cookie.但是,如果您在短时间内(使用表单身份验证cookie超时)返回该站点,并使用以下内容编辑新的ASP.NET_SessionId cookie:
将"name"字段从"ASP.NET_SessionId"更改为".ASPXAUTH"
将"char"从24 char sessionID更改为旧的448 char身份验证字符串
刷新后,您将能够承担经过身份验证的用户的身份,而无需再次进行技术上的重新身份验证.(再次假设您在.ASPXAUTH加密的auth字符串中存储的特定超时内执行此操作)
一篇好的博客文章更详细地解释了这个问题.一种可能的解决方案是将.ASPXAUTH与ASP会话结合起来.