Jeśli używasz standardowych dostawców członkostwa i uwierzytelnianie formach:
FormsAuthentication.SignOut();
HttpContext.Current.Session.Abandon();
Zazwyczaj działa wspaniale.
Należy pamiętać, że jeśli użytkownik naciśnie ponownie w przeglądarce, prawdopodobnie zobaczy wersję z pamięci podręcznej (zalogowaną).
Edycja w odpowiedzi na komentarz
Byłem pod wrażeniem, że FormsAuthentication.Signout:
Usuwa bilet formy uwierzytelniania z poziomu przeglądarki.
I to jak bilet uwierzytelnienia jest całkowicie odrębnym i niezwiązane z sesji tokena, jeśli chcesz całkowicie wyczyścić wszystkie wiedzy użytkownika z serwera w tym momencie, nazywając Session.Abandon to dobra rzecz. Zdaję sobie sprawę, że nowa sesja zostanie dla nich utworzona na następnej stronie - chciałbym zobaczyć dokumentację przeciwną.
Session.Abandon nie powinien być używany podczas wylogowywania użytkownika. FormsAuthentication.SignOut() powinien wykonać całe zadanie SignOut. –
Zauważyłem, że jeśli nie włączasz wywołania Session.Abandon(), dostawca roli ściąga role dla zalogowanego wcześniej użytkownika, gdy następnym razem ktoś się zaloguje. To nie jest dobre. –
@Shea Daniels: "Kiedy następnym razem ktoś się zaloguje" z tej samej maszyny? Ciekawy, ponieważ dostawca ról powinien pracować z aktualnie zalogowanym użytkownikiem, a token uwierzytelniania - w jaki sposób dzwonisz do dostawcy roli? –