2011-05-22 25 views
66

estoy usando la autenticación de formulario con el método de abajo en mi aplicación ASP.NET¿Cómo comprobar que el usuario está "conectado"?

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true); 

¿Cómo puedo comprobar si el usuario está conectado o no? ¿Y cómo puedo obtener el nombre de usuario de un usuario conectado?

Respuesta

149

he conseguido encontrar la correcta. Está abajo.

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

EDITAR

El crédito de esta edición va a @Gianpiero Caretti que sugirió esto en comentario.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated 
+28

Solo una pequeña corrección para un código más seguro: bool val1 = (System.Web.HttpContext.Current.User! = null) && System.Web.HttpContext .Current.User.Identity.IsAuthenticated –

+13

En las versiones más nuevas de C#, puede usar 'User? .Identity.IsAuthenticated == true'. – bradlis7

+0

o '¿Usuario? .Identity.IsAuthenticated ?? falso', pero el código de @ bradlis7 es probablemente más fácil de leer. – Michael

5

manera más fácil de comprobar si se autentican es Request.User.IsAuthenticated creo (de memoria)

+1

bien "Request.LogonUserIdentity" clase da todos estos métodos y propiedades. Gracias por el consejo. – BlueBird

+1

No @beardtwizzle. Esto muestra la cuenta de Windows iniciada o no. Incluso si elimina sus cookies, puede ver el nombre de usuario de la cuenta de ventana y el inicio de sesión. Éste trabajó para mí. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated" – BlueBird

7

La forma más sencilla:

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