Comment vérifier que l'utilisateur est «connecté»?

89

J'utilise l'authentification par formulaire avec la méthode ci-dessous dans mon application ASP.NET

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

Comment vérifier si l'utilisateur est connecté ou non? Et comment puis-je obtenir le nom d'utilisateur d'un utilisateur connecté?

Oiseau bleu
la source

Réponses:

189

J'ai réussi à trouver le bon. C'est ci-dessous.

bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

ÉDITER

Le mérite de cette modification revient à @Gianpiero Caretti qui l'a suggéré en commentaire.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Oiseau bleu
la source
35
Juste un petit correctif pour un code plus sûr: bool val1 = (System.Web.HttpContext.Current.User! = Null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero
14
Dans les versions plus récentes de C #, vous pouvez utiliser User?.Identity.IsAuthenticated == true.
bradlis7
3
ou User?.Identity.IsAuthenticated ?? false, mais le code de @ bradlis7 est probablement plus facile à lire.
Michael
13

Le moyen le plus simple:

if (Request.IsAuthenticated) ...
Keith
la source
6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}
Yanga
la source
Étant donné que cette approche n'a pas beaucoup de votes positifs, y a-t-il des inconvénients / problèmes à surveiller lors de l'utilisation de cette approche? J'ai décidé de l'utiliser et cela semble fonctionner, jusqu'à présent.
pnizzle
C'est presque la même chose que la réponse la plus votée, mais nous n'utilisons pas d'espaces de noms ici
mai
6

Le moyen le plus simple de vérifier s'ils sont authentifiés est Request.User.IsAuthenticatedje pense (de mémoire)

isNaN1247
la source
1
bien la classe "Request.LogonUserIdentity" donne toutes ces méthodes et propriétés. Merci pour le conseil.
BlueBird
1
Pas de @beardtwizzle. Cela montre le compte Windows connecté ou non. Même si vos cookies sont supprimés, vous pouvez voir le nom d'utilisateur du compte de fenêtre et vous connecter. Celui-ci a fonctionné pour moi. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird