web-dev-qa-db-fra.com

Comment effacer la session lors de la déconnexion

Je redirige l'utilisateur vers la page de connexion lorsque l'utilisateur clique sur Déconnexion, mais je ne pense pas que cela efface l'application ou la session, car toutes les données ont persisté lorsque l'utilisateur s'est reconnecté.

Actuellement, la page de connexion a un contrôle de connexion et le code en arrière de la page est uniquement câblé à la connexion Authentifier.

Quelqu'un peut-il me diriger vers un bon tutoriel ou un article sur la gestion de la connexion depuis et vers les sites Web ASP.NET?

55
Jack
66
Ryan Cook

J'utilise ce qui suit pour effacer la session et effacer aspnet_sessionID:

HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
22
kat1330

Je préférerais Session.Abandon()

Session.Clear() ne provoquera pas le déclenchement de End et les demandes ultérieures du client ne déclencheront pas l'événement Début de session.

18
AnthonyWJones

Session.Abandon() détruit la session et l'événement Session_OnEnd est déclenché.

Session.Clear() supprime simplement toutes les valeurs (contenu) de l'objet. Le session with the same key est toujours alive.

Donc, si vous utilisez Session.Abandon(), vous perdez cette session spécifique et l'utilisateur obtiendra un new session key. Vous pouvez l'utiliser par exemple lorsque l'utilisateur logs out.

Utilisez Session.Clear() si vous souhaitez que l'utilisateur reste dans la même session (si vous ne voulez pas qu'il se reconnecte par exemple) et réinitialisez toutes ses données spécifiques à la session.

11
BrainCoder

Accédez au fichier Global.asax.cs dans votre projet et ajoutez le code suivant.

    protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now.AddHours(-1));
        Response.Cache.SetNoStore();
    }

Cela a fonctionné pour moi ..! Lien de référence Effacer la session sur Logout MVC 4

2
Darshan
<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>  
1
Lucky

session.abandon () ne supprimera pas le cookie sessionID du navigateur. Par conséquent, toute nouvelle demande postérieure prendra le même identifiant de session. Par conséquent, utilisez Response.Cookies.Add (new HttpCookie ("ASP.NET_SessionId", "")); après session.abandon ().

0
Amey P Naik

La manière de vider la session est un peu différente pour le noyau .NET. Il n'y a pas de fonction Abandon().

ASP.NET Core 1.0 ou version ultérieure

//Removes all entries from the current session, if any. The session cookie is not removed.
HttpContext.Session.Clear()

Voir la référence api ici

.NET Framework 4.5 ou version ultérieure 

//Removes all keys and values from the session-state collection.
HttpContext.Current.Session.Clear(); 

//Cancels the current session.
HttpContext.Current.Session.Abandon();

Voir la référence api ici

0
Padhraic

Session.Clear ();

0
BobbyShaftoe