Comment effacer la session lors de la déconnexion
-
19-08-2019 - |
Question
Je redirige l'utilisateur vers la page de connexion lorsque l'utilisateur clique sur Déconnexion, mais je ne pense pas qu'il efface une application ou une 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é avec 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?
La solution
Session.Abandon()
http://msdn.microsoft.com/en-us/library/ ms524310.aspx
Voici un peu plus de détails sur l'objet HttpSessionState
:
http://msdn.microsoft.com/ en-us / library / system.web.sessionstate.httpsessionstate_members.aspx
Autres conseils
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", ""));
Je préférerais Session.Abandon ()
Session.Clear ()
n'entraînera pas le déclenchement de End et les autres demandes du client ne déclencheront pas l'événement de début de session.
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. La session avec la même clé
est toujours en vie
.
Ainsi, si vous utilisez Session.Abandon ()
, vous perdez cette session spécifique et l'utilisateur obtiendra une nouvelle clé de session
. Vous pouvez l'utiliser par exemple lorsque l'utilisateur se déconnecte
.
Utilisez Session.Clear ()
si vous souhaitez que l'utilisateur reste dans la même session (si vous ne souhaitez pas qu'il se reconnecte par exemple) et réinitialise toutes ses données spécifiques à la session.
Accédez au fichier Global.asax.cs de 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 lors de la déconnexion de 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>
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()
.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();
Session.Clear ();
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 ().