Como verificar se o usuário está “logado”?

88

Estou usando a autenticação de formulário com o método abaixo em meu aplicativo ASP.NET

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

Como verifico se o usuário está logado ou não? E como posso obter o nome de usuário de um usuário conectado?

Pássaro azul
fonte

Respostas:

188

Consegui encontrar o correto. Está abaixo.

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

EDITAR

O crédito desta edição vai para @Gianpiero Caretti, que sugeriu isso em um comentário.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Pássaro azul
fonte
35
Apenas uma pequena correção para um código mais seguro: bool val1 = (System.Web.HttpContext.Current.User! = Null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero
14
Em versões mais recentes do C #, você pode usar User?.Identity.IsAuthenticated == true.
bradlis7
3
ou User?.Identity.IsAuthenticated ?? false, mas o código de @ bradlis7 é provavelmente mais fácil de ler.
Michael
13

A maneira mais simples:

if (Request.IsAuthenticated) ...
Keith
fonte
6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}
Yanga
fonte
Visto que essa abordagem não tem tantos votos positivos, há alguma desvantagem / problema a ser observado ao usar essa abordagem? Decidi usar isso e parece funcionar, até agora.
pnizzle de
É quase igual à resposta mais votada, mas não estamos usando namespaces aqui
mai
6

A maneira mais fácil de verificar se eles estão autenticados é Request.User.IsAuthenticatedeu acho (de memória)

isNaN1247
fonte
1
bem, a classe "Request.LogonUserIdentity" fornece todos esses métodos e propriedades. Obrigado pela dica.
BlueBird de
1
Não @beardtwizzle. Isso está mostrando a conta do Windows conectada ou não. Mesmo se seus cookies removidos, você pode ver o nome de usuário da conta da janela e login. Este funcionou para mim. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird