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é?

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

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) ...

6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}

É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)


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.