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?

È stato utile?

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()

Vedi api Riferimento qui

.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();

Vedi riferimento api qui

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 ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top