5

Mam dziwny problem z RC2.ASP.NET Core Identity 3 Cookie timeout

Mam Instalator Identity 3 ExpireTimeSpan do 12 godzin przy użyciu następującej opcji konfiguracji

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

Po zalogowaniu się na stronie i pozostawiając nietknięte przez ~ 35-40mins, pojawia się błąd 401 (dla mojego ajax po wywołaniach) i odświeżeniu strony, wracam do strony logowania.

Dlaczego muszę ponownie uwierzytelnić się po skonfigurowaniu ExpireTimeSpan na 12 godzin?

Czy jest potrzebne inne ustawienie lub konfiguracja?

Również

Jak mogę uzyskać czas w lewo, zanim nastąpi wygaśnięcie? Chciałbym uzyskać dostęp do tych informacji, aby móc ostrzec moich użytkowników, że ich sesja wygaśnie po X dniach.

Dzięki!

Odpowiedz

5

Znalazłem problem

Problem leży w mechanizmie SecurityStamp. Domyślnie co 30 minut sprawdzany jest znaczek bezpieczeństwa. Wynika to głównie z faktu, że logowanie wszędzie jest opcją. Znaczek bezpieczeństwa jest aktualizowany zazwyczaj w tożsamości, gdy użytkownik zmienia hasło na przykład. Spowoduje to, że wszystkie lokalizacje, w których użytkownik się zalogował (z wyjątkiem tego, w którym zmienił swoje hasło) wylogują się po 30 minutach, ponieważ znaczek (zwykle guid) się zmienił.

Aby wdrożyć tę funkcjonalność, wdrożenie interfejs w swojej UserStore ISecurityStampStore<T> i wdrożenie metody

GetSecurityStampAsync(User user, CancellationToken cancellationToken) Więcej informacji można sprawdzić znaczka zabezpieczającego kodu walidatora i dlaczego podpisuje cię po 30min

https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/SecurityStampValidator.cs

Uwaga: Opcję options.SecurityStampValidationInterval można ustawić w celu zwiększenia kontroli czasu, ale nie rozwiązuje problemu. Po X dniach nadal będziesz wylogowany.

+0

Więc nie ma okresu wygaśnięcia lub czegoś podobnego? To jest do bani! Myślę, że tego też potrzebuję. Mój plik cookie kończy się po 30 minutach, mimo że moja sesja jest nadal sprawdzana ... – ganders

+0

Czy możesz opublikować swój kod, ponieważ jest on umieszczony w twoim projekcie. Nadal nie mogę sprawić, by moja pracowała, nawet włączając w to zmiany, o których wspomniałeś. Plik Startup.cs, itp. – ganders

+0

Czy używasz DB jako backendu? Active Directory? Wszystko zależy od twojego środowiska! Jeśli możesz zrobić skrzypka lub coś, co możemy zobaczyć w kodzie, byłoby to pomocne! – DOMZE

Powiązane problemy