ASP.NET:当身份验证期到期时,FormsCookie会消失吗?

时间:2010-12-20 15:37:09

标签: asp.net cookies timeout forms-authentication

我正在尝试建立一些身份验证超时到期检查,我注意到一些有点奇怪的事情。当身份验证期限仍然有效时,以下代码将为我提供一个cookie:

HttpCookie authCookie = context.Request.Cookies[".ASPXAUTH"]; // .ASPXAUTH name defined in web.config

但是当身份验证期限到期时,cookie不再位于Cookies数组中,我的结果为null。我正在尝试从cookie中构建一个FormsAuthenticationTicket对象,以便能够检查过期的属性。像这样:

FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

// check if previously authenticated session is now dead
if (authTicket != null && authTicket.Expired)
{
    // send a Response indicating that they've expired.
}

但是,如果认证期限到期后cookie消失了,我甚至无法做到这一点。那么有什么我做错了,或者那个饼干不应该在那里?如果没有,我怎么建立一张甚至检查 Expired属性的票?

非常感谢。

2 个答案:

答案 0 :(得分:0)

Cookie具有可在配置文件中指定的到期超时值。关于cookie何时到期,没有太多警告;您可以构建一个流程来检查每个请求,以查看它过期的请求。

然而,元素中的因素也是如此,这可能需要有效的用户(非匿名),因此如果没有cookie,您可能会被踢出去。

在此处详细了解:http://support.microsoft.com/kb/910443

答案 1 :(得分:0)

如果在FormsAuthenticationTicket上将isPersistent设置为false,则不会设置持久性cookie。当故障单过期时,cookie不会随请求一起发送,因此您无法访问它。