Zarówno Session.Clear (), jak i Session.Abandon () pozbywają się zmiennych sesji. Jak rozumiem, Abandon () kończy bieżącą sesję i powoduje utworzenie nowej sesji, powodując wywołanie zdarzeń End i Start.
W większości przypadków, na przykład wylogowywanie użytkownika, wydaje się lepsze wywołanie Abandon (). Czy są scenariusze, w których zamiast tego użyłbym Clear ()? Czy jest duża różnica w wydajności?
źródło
Session.Abandon()
jako „wylogowanie” w wewnętrznej aplikacji przy użyciu uwierzytelniania systemu Windows - użytkownicy nie musieli ponownie uwierzytelniać się (Chrome, FF), ale sesja została usunięta i wydano nową, która spełniła moje wymaganiaTylko użycie Session.Clear (), gdy użytkownik się wyloguje, może stanowić lukę w zabezpieczeniach. Ponieważ sesja jest nadal ważna, jeśli chodzi o serwer WWW. W takim razie wąchanie, przechwycenie identyfikatora sesji i przejęcie tej sesji jest dość trywialną sprawą.
Z tego powodu podczas wylogowywania użytkownika bezpieczniejsze i rozsądniejsze byłoby użycie Session.Abandon (), aby sesja została zniszczona i utworzona nowa sesja (nawet jeśli strona wylogowania UI byłaby częścią nowej sesji, nowa sesja nie zawierałaby żadnych szczegółów użytkownika, a przechwycenie nowej sesji byłoby równoznaczne z posiadaniem nowej sesji, a zatem byłoby wyciszone).
źródło
Session.Abandon
niszczy sesję, jak wspomniano powyżej, więc powinieneś tego używać podczas wylogowywania kogoś. Myślę, że dobrym zastosowaniemSession.Clear
byłby koszyk na zakupy w witrynie e-commerce. W ten sposób koszyk zostanie wyczyszczony bez wylogowania użytkownika.źródło
Session.Abandon
tylko do wyczyszczenia konkretnego koszyka?Miałem ten problem i próbowałem obu, ale musiałem zadowolić się usunięciem bzdur, takich jak „pageEditState”, ale nie usuwaniem informacji o użytkowniku, aby nie musieć ich ponownie sprawdzić.
źródło