在過去的幾個月裏,我們有用戶抱怨說,儘管我們的身份驗證超時設置爲30,但他們的身份驗證有時會提前過期 - 只有20分鐘的非活動狀態。今天發現SlidingExpiration只在剩下不到一半的授權時間時纔會重置,留下了做某事的可能性,等待十分鐘,做其他事情,等待21分鐘,並且獲得「提早」超時。每個請求都需要執行SetAuthCookie
在Master Page的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是我們應用程序中的一個變量;如果你試圖直接編譯它,它將無法工作。 – 2012-08-21 15:17:32