Come cancellare la sessione al logout
-
19-08-2019 - |
Domanda
Reindirizzo l'utente alla pagina di accesso quando l'utente fa clic sul logout, tuttavia non credo che cancelli alcuna applicazione o sessione perché tutti i dati sono persistiti quando l'utente accede nuovamente.
Attualmente la pagina di accesso ha un controllo di accesso e il codice dietro la pagina è cablato solo per l'accesso Autenticare.
Qualcuno può indirizzarmi a un buon tutorial o articolo sulla gestione dell'accesso e della disconnessione dai siti Web ASP.NET?
Soluzione
Session.Abandon()
http://msdn.microsoft.com/en-us/library/ ms524310.aspx
Ecco qualche dettaglio in più sull'oggetto HttpSessionState
:
http://msdn.microsoft.com/ it-it / library / system.web.sessionstate.httpsessionstate_members.aspx
Altri suggerimenti
Uso il seguente per cancellare la sessione e deselezionare aspnet_sessionID
:
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Preferirei Session.Abandon()
Session.Clear ()
non causerà l'attivazione di End e ulteriori richieste dal client non genereranno l'evento Session Start.
Session.Abandon ()
distrugge la sessione e viene attivato l'evento Session_OnEnd
.
Session.Clear ()
rimuove semplicemente tutti i valori (contenuto) dall'oggetto. La sessione con la stessa chiave
è ancora viva
.
Quindi, se usi Session.Abandon ()
, perdi quella sessione specifica e l'utente riceverà un nuova chiave di sessione
. Potresti usarlo ad esempio quando l'utente si disconnette
.
Utilizzare Session.Clear ()
, se si desidera che l'utente rimanga nella stessa sessione (se non si desidera riaccedere, ad esempio) e ripristinare tutti i dati specifici della sessione.
Vai al file Global.asax.cs nel tuo progetto e aggiungi il seguente codice.
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddHours(-1));
Response.Cache.SetNoStore();
}
Ha funzionato per me ..! Link di riferimento Cancella sessione su Logout MVC 4
<script runat="server">
protected void Page_Load(object sender, System.EventArgs e) {
Session["FavoriteSoftware"] = "Adobe ColdFusion";
Label1.Text = "Session read...<br />";
Label1.Text += "Favorite Software : " + Session["FavoriteSoftware"];
Label1.Text += "<br />SessionID : " + Session.SessionID;
Label1.Text += "<br> Now clear the current session data.";
Session.Clear();
Label1.Text += "<br /><br />SessionID : " + Session.SessionID;
Label1.Text += "<br />Favorite Software[after clear]: " + Session["FavoriteSoftware"];
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>asp.net session Clear example: how to clear the current session data (remove all the session items)</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2 style="color:Teal">asp.net session example: Session Clear</h2>
<asp:Label
ID="Label1"
runat="server"
Font-Size="Large"
ForeColor="DarkMagenta"
>
</asp:Label>
</div>
</form>
</body>
</html>
Il modo di cancellare la sessione è leggermente diverso per .NET core. Non esiste alcuna funzione Abandon ()
.
ASP.NET Core 1.0 o successivo
//Removes all entries from the current session, if any. The session cookie is not removed.
HttpContext.Session.Clear()
.NET Framework 4.5 o successivo
//Removes all keys and values from the session-state collection.
HttpContext.Current.Session.Clear();
//Cancels the current session.
HttpContext.Current.Session.Abandon();
Session.clear ();
session.abandon () non rimuoverà il cookie sessionID dal browser. Pertanto, eventuali nuove richieste successive avranno lo stesso ID sessione. Quindi, utilizzare Response.Cookies.Add (nuovo HttpCookie (" ASP.NET_SessionId " ;, " ")); dopo session.abandon ().