我正在尝试建立一些身份验证超时到期检查,我注意到一些有点奇怪的事情。当身份验证期限仍然有效时,以下代码将为我提供一个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属性的票?
非常感谢。
答案 0 :(得分:0)
Cookie具有可在配置文件中指定的到期超时值。关于cookie何时到期,没有太多警告;您可以构建一个流程来检查每个请求,以查看它过期的请求。
然而,元素中的因素也是如此,这可能需要有效的用户(非匿名),因此如果没有cookie,您可能会被踢出去。
答案 1 :(得分:0)
如果在FormsAuthenticationTicket上将isPersistent设置为false,则不会设置持久性cookie。当故障单过期时,cookie不会随请求一起发送,因此您无法访问它。