Mam kod, który przeglądam, dotyczący limitów czasu sesji w witrynie. W web.config natknąłem się na ten kod.
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
Czy ktoś wie, czy jedno ma pierwszeństwo przed drugim i czym się różnią. Dzięki.
asp.net
session
web-config
Lucky Luke2
źródło
źródło
Odpowiedzi:
To są różne rzeczy. Wartość Limit czasu uwierzytelniania za pomocą formularzy określa czas w minutach, przez jaki plik cookie uwierzytelniania jest ustawiony jako ważny, co oznacza, że po określonej
value
liczbie minut plik cookie wygaśnie, a użytkownik nie będzie już uwierzytelniany - zostanie przekierowany do logowania strona automatycznie.slidingExpiration=true
Wartość jest w zasadzie powiedzieć, że tak długo jak użytkownik wysyła żądanie w wartości limitu czasu, będą one nadal być uwierzytelniony (więcej szczegółów tutaj ). Jeśli ustawisz,slidingExpiration=false
plik cookie uwierzytelniania wygaśnie po określonejvalue
liczbie minut, niezależnie od tego, czy użytkownik zgłosi żądanie w określonym limicie czasu, czy nie.Wartość
SessionState
limitu czasu określa ilość czasu, przez jaki dostawca stanu sesji jest wymagany do przechowywania danych w pamięci (lub w jakimkolwiek używanym magazynie zapasowym, SQL Server, OutOfProc itp.) Dla określonej sesji. Na przykład, jeśli umieścisz obiekt w sesji przy użyciu wartości z przykładu, dane te zostaną usunięte po 30 minutach. Użytkownik może nadal być uwierzytelniony, ale dane w sesji mogą już nie być obecne.Session Timeout
Wartość jest zawsze zerowany po każdym żądaniu.źródło
To nie jest poprawne. Limit czasu pliku cookie uwierzytelniania zostanie zresetowany tylko wtedy, gdy minie połowa limitu czasu.
Zobacz na przykład https://support.microsoft.com/de-ch/kb/910439/en-us lub https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -koniec czasu/
źródło
Z tego, co rozumiem, są od siebie niezależne. Utrzymując limit czasu sesji mniejszy lub równy limitowi czasu uwierzytelniania, możesz upewnić się, że żadne zmienne sesji specyficzne dla użytkownika nie są utrwalane po upływie limitu czasu uwierzytelniania (jeśli to twój problem, co myślę, że jest normalne, gdy o to pytam pytanie). Oczywiście będziesz musiał ręcznie zająć się usuwaniem zmiennych sesji po wylogowaniu.
Oto przyzwoita odpowiedź, która może odpowiedzieć na twoje pytanie lub przynajmniej wskazać właściwy kierunek:
źródło
Różnica polega na tym, że jeden (limit czasu formularzy) ma związek z uwierzytelnianiem użytkownika, a drugi (limit czasu sesji) ma związek z tym, jak długo buforowane dane są przechowywane na serwerze. Są więc bardzo niezależnymi rzeczami, więc jedna nie ma pierwszeństwa przed drugą.
źródło
Ta konfiguracja wysyła mnie do strony logowania co dwie minuty, co wydaje się zaprzeczać wcześniejszym odpowiedziom
źródło
Każdy, kto natknie się na to pytanie, powinien zapoznać się z dokumentacją firmy MS - zawiera ona naprawdę dobre szczegóły dotyczące ustawienia limitu czasu uwierzytelniania FormsAuthentication.
Ten dokument wyjaśnia szczegółowo komentarz, który bmode tworzy w zaakceptowanej odpowiedzi - o trwałym pliku cookie (sesja a wygasa)
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- wartość limitu czasu
źródło