90 votes

comment supprimer les cookies sur le site asp.net

Dans mon site web lorsque l'utilisateur clique sur le bouton de déconnexion. Fermeture de la session.aspx chargement de la page avec le code Session.Clear(); dans ASP.NET/C# ce faire effacer tous les cookies? Ou est-il un autre code à ajouter, de supprimer tous les cookies de mon site web?

156voto

Kirill Points 1479

Essayez quelque chose comme ça:

if (Request.Cookies["userId"] != null)
{
    Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);   
}

Mais il est également judicieux d'utiliser

Session.Abandon();

en outre, dans de nombreux scénarios.

51voto

VMAtm Points 8401

Non, les Cookies peuvent être nettoyés uniquement par le réglage de la date d'Expiration pour chacun d'eux.

if (Request.Cookies["UserSettings"] != null)
{
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}

Au moment de l' Session.Clear():

  • Toutes les paires clé-valeur de Session collection sont supprimés. Session_End événement n'est pas arriver.

Si vous utilisez cette méthode lors de la déconnexion, vous devez également utiliser l' Session.Abandon méthode de Session_End événement:

  • Cookie avec un IDENTIFIANT de Session (si votre application utilise des cookies de session id store, qui est par défaut) est supprimé

31voto

pixelbits Points 5710

C'est ce que j'utilise:

    private void ExpireAllCookies()
    {
        if (HttpContext.Current != null)
        {
            int cookieCount = HttpContext.Current.Request.Cookies.Count;
            for (var i = 0; i < cookieCount; i++)
            {
                var cookie = HttpContext.Current.Request.Cookies[i];
                if (cookie != null)
                {
                    var cookieName = cookie.Name;
                    var expiredCookie = new HttpCookie(cookieName) {Expires = DateTime.Now.AddDays(-1)};
                    HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
                }
            }

            // clear cookies server side
            HttpContext.Current.Request.Cookies.Clear();
        }
    }

12voto

Buh Buh Points 2624

Malheureusement, pour moi, le paramètre "date d'Expiration" ne fonctionne pas toujours. Le cookie n'a pas été affectée.

Ce code a fonctionné pour moi:

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

"ASP.NET_SessionId" est le nom du cookie. Ce n'est pas vraiment supprimer le cookie, mais le remplace par un espace vide cookie, ce qui était assez proche pour moi.

5voto

MTs Points 162

Je veux juste souligner que le cookie de Session n'est pas supprimé lors de l'utilisation de Session.Abandonner comme les autres ont dit.

Lorsque vous abandonner une session, le cookie de session n'est pas supprimé le navigateur de l'utilisateur. Par conséquent, dès que la session a été abandonnée, les nouvelles demandes de la même application va utiliser le même ID de session, mais qui aura une nouvelle session de l'état de l'instance. Dans le même temps, si l'utilisateur ouvre une autre application dans le même DNS domaine, l'utilisateur ne perdent pas leur état de session après l'Abandon la méthode est appelée à partir d'une application.

Parfois, vous ne pouvez pas réutiliser le code de session. Si vous le faites et si comprendre les ramifications de ne pas réutiliser l'ID de session, utiliser l'exemple de code suivant pour abandonner une session et pour effacer la cookie de session:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

Cet exemple de code efface l'état de session à partir du serveur et le cookie d'état de session null. La valeur null supprime efficacement le cookie du navigateur.

http://support.microsoft.com/kb/899918

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X