2010-03-03 7 views
7
protected void Button2_Click(object sender, System.EventArgs e) //logout 
{ 
    if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     System.Web.HttpContext.Current.Session.Abandon(); // it isn't logout >_< 
    } 
} 

comment se déconnecter? : Pcomment se connecter à l'adhésion ASP

Répondre

10

Si vous utilisez les fournisseurs d'adhésion standard et l'authentification par formulaire:

FormsAuthentication.SignOut(); 
HttpContext.Current.Session.Abandon(); 

travaille habituellement un régal. Sachez que si l'utilisateur appuie de nouveau dans son navigateur, il verra probablement la version mise en cache (connectée).

Modifier pour répondre aux commentaires

J'avais l'impression que FormsAuthentication.Signout:

Supprime le ticket d'authentification des formulaires à partir du navigateur.

Et que le ticket d'authentification est complètement distincte et sans rapport avec la jeton session de , si vous voulez tout savoir de l'utilisateur tout à fait clair à partir du serveur à ce moment-là, appelant Session.Abandon est une bonne chose à faire. Je suis conscient qu'une nouvelle session sera créée pour eux sur la prochaine page de demande - je serais intéressé de voir la documentation à l'effet contraire.

+0

Session.Abandon ne doit pas être utilisé lors de la déconnexion d'un utilisateur. FormsAuthentication.SignOut() doit effectuer tout le travail SignOut. –

+0

J'ai découvert que si vous n'incluez pas l'appel Session.Abandon(), le fournisseur de rôle récupère les rôles de l'utilisateur connecté la prochaine fois que quelqu'un se connecte. Ce n'est pas bon. –

+0

@Shea Daniels: "La prochaine fois que quelqu'un se connecte" à partir de la même machine? Curieux, car le fournisseur de rôle doit travailler avec l'utilisateur actuellement connecté, et le jeton Auth - Comment appelez-vous votre fournisseur de rôle? –

2
FormsAuthentication.SignOut(); 
FormsAuthentication.RedirectToLoginPage(); 

Cela devrait déconnexion de l'utilisateur et l'emmener à la page de connexion.