J'ai lutté avec cette avant de trop.
Voici une analogie de ce qui semble être en cours... Un nouveau visiteur, Joe, qui vient sur le site et connecte via la page de connexion à l'aide de FormsAuthentication. ASP.NET génère une nouvelle identité pour Joe, et lui donne un cookie. Ce cookie est comme la clé de la maison, et aussi longtemps que Joe revient avec cette clé, il peut ouvrir la serrure. Chaque visiteur est donné une nouvelle clé et une nouvelle serrure à utiliser.
Lors de l' FormsAuthentication.SignOut()
est appelé, le système dit à Joe de perdre la clé. Normalement, cela fonctionne, puisque Joe n'a plus la clé, il ne peut pas y entrer.
Toutefois, si Joe vient jamais en arrière, et n' ont que de clés perdues, il est laissé en arrière!
À partir de ce que je peux dire, il n'y a aucun moyen de savoir ASP.NET pour changer la serrure de la porte!
La façon dont je peux vivre avec ce souvenir de Joe nom dans une variable de Session. Lorsqu'il se déconnecte, j'abandonne la Session donc je n'ai pas son nom plus. Plus tard, pour vérifier si il est autorisé, j'ai simplement comparer son Identité.Nom à ce que la session en cours, et si elles ne correspondent pas, il n'est pas valide d'un visiteur.
En bref, pour un site web, ne comptez PAS sur User.Identity.IsAuthenticated
sans vérification de vos variables de Session!