【发布时间】:2012-08-15 18:21:34
【问题描述】:
在过去的几个月里,尽管我们将身份验证超时设置为 30,但我们有用户抱怨他们的身份验证有时会提前到期 - 仅在 20 分钟不活动之后。我今天发现 SlidingExpiration 仅在以下情况下才会重置剩下不到一半的身份验证时间,留下了做某事的可能性,等待 10 分钟,做其他事情,等待 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)我很确定他们不能用过期的票到达那里,但如果他们超过 30 分钟,我确保不要重置它。 2) currentUser 是我们应用程序中的一个变量;如果你试图直接编译它是行不通的。
标签: asp.net forms-authentication