Wie überprüfe ich, ob der Benutzer "angemeldet" ist?

88

Ich verwende die Formularauthentifizierung mit der folgenden Methode in meiner ASP.NET-Anwendung

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

Wie überprüfe ich, ob der Benutzer angemeldet ist oder nicht? Und wie kann ich den Benutzernamen eines angemeldeten Benutzers erhalten?

BlueBird
quelle

Antworten:

187

Ich habe es geschafft, den richtigen zu finden. Es ist unten.

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

BEARBEITEN

Der Verdienst dieser Bearbeitung geht an @Gianpiero Caretti, der dies in einem Kommentar vorgeschlagen hat.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
BlueBird
quelle
35
Nur eine kleine Korrektur für sichereren Code: bool val1 = (System.Web.HttpContext.Current.User! = Null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero
14
In neueren Versionen von C # können Sie verwenden User?.Identity.IsAuthenticated == true.
Bradlis7
3
oder User?.Identity.IsAuthenticated ?? false, aber der Code von @ bradlis7 ist wahrscheinlich leichter zu lesen.
Michael
13

Der einfachste Weg:

if (Request.IsAuthenticated) ...
Keith
quelle
6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}
Yanga
quelle
Gibt es Nachteile / Probleme, die bei der Verwendung dieses Ansatzes zu beachten sind, da dieser Ansatz nicht so viele positive Stimmen hat? Ich habe mich dafür entschieden und es scheint bisher zu funktionieren.
pnizzle
Es ist fast das gleiche wie die oben Antwort gestimmt , aber wir sind nicht mit Namespaces hier
mai
6

Der einfachste Weg, um zu überprüfen, ob sie authentifiziert sind, ist Request.User.IsAuthenticatedmeiner Meinung nach (aus dem Speicher)

isNaN1247
quelle
1
Die Klasse "Request.LogonUserIdentity" bietet alle diese Methoden und Eigenschaften. Danke für den Tipp.
BlueBird
1
Kein @beardtwizzle. Dies zeigt das angemeldete Windows-Konto an oder nicht. Selbst wenn Ihre Cookies entfernt wurden, können Sie den Benutzernamen des Fensterkontos und die Anmeldung sehen. Dieser hat für mich gearbeitet. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird