在每个请求中做一个SetAuthCookie的缺点

时间:2012-08-15 18:21:34

标签: asp.net forms-authentication

在过去的几个月里,我们曾经让用户抱怨他们的身份验证有时会提前到期 - 只有20分钟不活动,尽管事实上我们的身份验证超时设置为30.我今天发现SlidingExpiration只会重置剩下不到一半的auth时间,留下做某事的可能性,等待十分钟,做其他事情,等待21分钟,然后“早”超时。

在我的母版页Page_Load中做这样的事情是否有任何潜在的缺点?

if(CurrentUser != null) {
    FormsAuthentication.SetAuthCookie(CurrentUser.UserName, false);
}

...因此每次请求都会重置滑动到期时间?

修改

这段代码是我用完的东西;它每分钟只重置一次令牌。

var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var ticket = FormsAuthentication.Decrypt(cookie.Value);

if (ticket.IssueDate.AddMinutes(1) < DateTime.Now && ticket.IssueDate.AddMinutes(30) > DateTime.Now) {
    FormsAuthentication.SetAuthCookie(currentUser.UserName, false);
}

1 个答案:

答案 0 :(得分:2)

最大的缺点是它会禁用缓存,例如&lt;%@ OutputCache%&gt;指令将不再正常运行。因此,您可能会因缓存未命中而看到性能损失。

如果您能够做到,最简单的方法就是延长到期时间。