2016-03-08 86 views
0

我使用了ClaimsIdentity Framework在我的一個應用程序中設置了auth。會話超時不起作用(在web.config中設置)

我將這些行添加到web.config文件中,如this question中所述。

<sessionState 
     mode="InProc" 
     timeout="1" /> 

我讓應用程序運行在一夜之間,但我還是登陸, 我想會話超時設置爲30分鐘,有什麼建議?

ASP.NET MVC版本:5.2.3.0

+0

登錄時會話是完全不同的。 –

+0

@ErikPhilips你能解釋一下嗎? –

+0

你使用什麼進行授權?表格,會員或身份? –

回答

1

ASP.Net-Identity-Cookie-Authentication-Timeouts你應該用身份的UseCookieAuthentication()參數,設置超時時間。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    Provider = new CookieAuthenticationProvider 
    { 
    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
     validateInterval: TimeSpan.FromMinutes(15), 
     regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)), 
    }, 
    SlidingExpiration = false, 
    ExpireTimeSpan = TimeSpan.FromMinutes(30) 
}); 

CookieAuthenticationOptions.ExpireTimespan是允許您設置發出的cookie的有效期爲選項。在上面的示例中,該cookie從創建時起有效30分鐘。一旦這30分鐘結束,用戶將不得不重新簽名,因爲SlidingExpiration設置爲false。

如果將SlidingExpiration設置爲true,則在通過ExpireTimeSpan的一半時間內,任何請求都會重新發布cookie。例如,如果用戶登錄,然後在16分鐘後發出第二次請求,則cookie將被重新發布另外30分鐘。如果用戶登錄,然後在31分鐘後發出第二個請求,則會提示用戶登錄。