2015-11-06 62 views
1

在我的MVC Startup.Auth.cs文件中,有這樣的代碼:ASP.NET身份,「記住我」和Cookie超時

Provider = new CookieAuthenticationProvider 
       { 
        OnValidateIdentity = SecurityStampValidator 
         .OnValidateIdentity<ApplicationUserManager, ApplicationUser, int>(
          validateInterval: TimeSpan.FromMinutes(30), 
          regenerateIdentityCallback: (manager, user) => 
           user.GenerateUserIdentityAsync(manager), 
          getUserIdCallback: (id) => (id.GetUserId<int>())) 
       } 

如果我理解正確此,登錄cookie將在30日到期分鐘。這意味着用戶將被迫在30分鐘內重新登錄。如果這是正確的,如果登錄cookie在30分鐘內過期,讓用戶在登錄頁面上選擇「記住我」會有什麼價值?

回答

0

您顯示的代碼片段與「記住我」沒有多大關係。 SecurityStampValidator實際上是檢查創建的cookie是否對數據庫中的用戶記錄仍然有效。並且validateInterval: TimeSpan.FromMinutes(30)定義了多久檢查一次cookie與數據庫的時間間隔。

由Identity框架創建的Cookie包含通常足以使用的數據,無需返回到每個HTTP請求上的數據庫,因此爲了提高性能,不會在每個請求上使用數據庫檢查Cookie。但是,您可以通過更改數據庫中的SecurityStamp來使所有用戶cookie無效。這SecurityStampValidator檢查。但是如果用戶登錄後30分鐘內沒有任何變化,他們將不會被註銷。只有cookie的值會被更新,但用戶仍然會登錄。

我希望現在更清楚。