Jak sprawdzić, czy użytkownik jest „zalogowany”?

89

Używam uwierzytelniania formularza z poniższą metodą w mojej aplikacji ASP.NET

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

Jak sprawdzić, czy użytkownik jest zalogowany, czy nie? Jak mogę uzyskać nazwę zalogowanego użytkownika?

Niebieski ptak
źródło

Odpowiedzi:

189

Udało mi się znaleźć właściwy. To jest poniżej.

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

EDYTOWAĆ

Podziękowania tej zmiany należą do @Gianpiero Caretti, który zasugerował to w komentarzu.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Niebieski ptak
źródło
35
Tylko mała poprawka dla bezpieczniejszego kodu: bool val1 = (System.Web.HttpContext.Current.User! = Null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero
14
W nowszych wersjach C # można używać User?.Identity.IsAuthenticated == true.
bradlis7
3
lub User?.Identity.IsAuthenticated ?? false, ale kod @ bradlis7 jest prawdopodobnie łatwiejszy do odczytania.
Michael
13

Najprostszy sposób:

if (Request.IsAuthenticated) ...
Keith
źródło
6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}
Yanga
źródło
Widząc, że to podejście nie ma tak wielu pozytywnych opinii, czy są jakieś wady / problemy, na które należy uważać podczas korzystania z tego podejścia? Postanowiłem to wykorzystać i wydaje się, że jak dotąd działa.
pnizzle
To prawie to samo, co najczęściej głosowana odpowiedź, ale nie używamy tutaj przestrzeni nazw
mai
6

Request.User.IsAuthenticatedMyślę, że najłatwiejszym sposobem sprawdzenia, czy są uwierzytelnione (z pamięci)

isNaN1247
źródło
1
well "Request.LogonUserIdentity" zawiera wszystkie te metody i właściwości. Dzięki za wskazówkę.
BlueBird
1
Nie @beardtwizzle. To pokazuje, czy konto Windows jest zalogowane, czy nie. Nawet jeśli usunięto pliki cookie, możesz zobaczyć nazwę użytkownika konta Windows i login. Ten pracował dla mnie. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird