在过去的几个月里,尽管我们将身份验证超时设置为 30,但我们有用户抱怨他们的身份验证有时会提前到期 - 仅在 20 分钟不活动之后。我今天发现 SlidingExpiration 仅在小于时重置剩下一半的身份验证时间,留下做某事的可能性,等待十分钟,做其他事情,等待 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);
}