![](/img/trans.png)
[英]Force Session Expires when login with same credential in another web browser
[英]Login session never expires
我在登錄過程中像這樣在AccountController
中創建一個HttpCookie
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
當model.RememberMe
為false
時,即使重新啟動瀏覽器,我也不會注銷。 會話在20分鍾后或關閉瀏覽器后是否不應該過期?
另外,在身份驗證過程中,我還使用此方法設置cookie以存儲Role信息。 這還將設置一個非持久性cookie。 這會影響登錄cookie嗎?
我注意到的是,當我在Global.asax.cs
反序列化cookie時, HttpCookie
的DateTime.MinValue
到期,而authTicket
的到期日最長為20分鍾。 如果我讓這段時間過去了,那么我不會注意到用戶注銷,實際上是由於過期日期在未來20分鍾左右跳了,因此更新了Cookie,但是我看不到代碼中發生了這種情況!
誰能幫助解釋發生了什么事?
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
var serializer = new JavaScriptSerializer();
var serializeModel = serializer.Deserialize<EMPrincipalSerializeModel>(authTicket.UserData);
if (!authTicket.Expired && serializeModel != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
var newUser = new EMPrincipal(authTicket.Name);
newUser.Id = serializeModel.Id;
newUser.RealName = serializeModel.RealName;
newUser.Username = serializeModel.UserName;
HttpContext.Current.User = newUser;
}
}
}
由於滑動到期,您的身份驗證到期正在更改,這意味着在每個請求上,到期都將重置為x分鍾。 這是FormsAuthentication的默認行為。 身份驗證僅在閑置x分鍾后失效,每次調用檢查會話的請求時,您都將對其進行更新。
您可以根據需要禁用此功能: https : //msdn.microsoft.com/zh-cn/library/system.web.security.formsauthentication.slidingexpiration%28v=vs.110%29.aspx
如果禁用,則身份驗證將在創建后的x分鍾后失效,而不是在不活動后的x分鍾后失效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.