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