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?

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

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) ...

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

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)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.