¿Cómo comprobar si el usuario está "conectado"?

89

Estoy usando la autenticación de formulario con el método siguiente en mi aplicación ASP.NET

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

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

Azulejo
fuente

Respuestas:

189

Me las arreglé para encontrar el correcto. Está abajo.

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

EDITAR

El crédito de esta edición es para @Gianpiero Caretti, quien sugirió esto en un comentario.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Azulejo
fuente
35
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
Gianpiero
14
En las versiones más recientes de C #, puede usar User?.Identity.IsAuthenticated == true.
bradlis7
3
o User?.Identity.IsAuthenticated ?? false, pero el código de @ bradlis7 es probablemente más fácil de leer.
Michael
13

La forma más sencilla:

if (Request.IsAuthenticated) ...
Keith
fuente
6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}
Yanga
fuente
Dado que este enfoque no tiene tantos votos a favor, ¿hay algún inconveniente / problema a tener en cuenta al utilizar este enfoque? He decidido usar esto y parece funcionar, hasta ahora.
pnizzle
Es casi lo mismo que la respuesta más votada, pero no estamos usando espacios de nombres aquí
mai
6

La forma más fácil de verificar si están autenticados es Request.User.IsAuthenticatedcreo (de memoria)

isNaN1247
fuente
1
bueno, la clase "Request.LogonUserIdentity" proporciona todos estos métodos y propiedades. Gracias por el consejo.
BlueBird
1
No @beardtwizzle. Esto muestra la cuenta de Windows conectada o no. Incluso si se eliminan las cookies, puede ver el nombre de usuario de la cuenta de ventana y el inicio de sesión. Este funcionó para mí. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird