5

我有一個奇怪的問題與RC2發生。ASP.NET核心標識3 Cookie超時

我已經安裝使用標識以下配置選項

options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0); 

登錄到網站,並離開它觸及了〜35-40mins後3個ExpireTimeSpan到12個小時,我得到一個401錯誤(我的AJAX張貼電話)和刷新網站,我回到登錄頁面。

爲什麼我必須在將ExpireTimeSpan設置爲12小時時重新進行身份驗證?

我還需要其他設置或配置嗎?

此外,

我怎樣才能得到期滿之前發生剩餘的時間?我想訪問這些信息,以便我可以警告我的用戶他們的會話將在X時間後過期。

謝謝!

回答

5

我發現問題

問題在於SecurityStamp機制。 默認情況下,每隔30分鐘驗證一次安全印章。這主要是因爲到處登錄是一種選擇。 當用戶更改密碼時,安全戳通常以身份更新。 這將使用戶簽署的所有位置(除了他更改密碼的位置)在30分鐘後退出,因爲郵票(通常是guid)已更改。

要實現此功能,實現您的UserStore的ISecurityStampStore<T>接口和實現GetSecurityStampAsync(User user, CancellationToken cancellationToken)方法

欲瞭解更多信息,你可以檢查安全圖章的驗證碼和原因之後30分鐘

,您就會退出https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/SecurityStampValidator.cs

注意: options.SecurityStampValidationInterval可以設置爲增加時間檢查,但它不能解決問題。 X時間後,您仍然會退出。

+0

所以沒有滾動到期或類似的東西?太糟糕了!我認爲這也是我需要的。即使我的會話繼續保持有效,我的Cookie仍會在30分鐘後超時... – ganders

+0

您是否可以在您的項目中發佈代碼?即使包含您提到的更改,我仍然無法工作。 Startup.cs文件等 – ganders

+0

您是否使用數據庫作爲後端?活動目錄?這一切都取決於你的環境!如果你可以做一個小提琴手或者我們可以看到代碼的東西,這會很有幫助! – DOMZE