Como obter o usuário atual no asp.net MVC

Em um modelo de formulários, eu costumava obter o usuário atual conectado por:

Page.CurrentUser 

Como faço para obter o usuário atual dentro de uma class de controlador no asp.net MVC?

Se você precisar obter o usuário de dentro do controlador, use a propriedade User do Controller. Se você precisar dele a partir da visão, eu iria preencher o que você precisa especificamente no ViewData , ou você poderia apenas chamar o usuário como eu acho que é uma propriedade do ViewPage .

Descobri que o User funciona, ou seja, User.Identity.Name ou User.IsInRole("Administrator") .

Tente HttpContext.Current.User .

Propriedade compartilhada pública Current () como System.Web.HttpContext
Membro do System.Web.HttpContext

Resumo:
Obtém ou define o object System.Web.HttpContext para a solicitação HTTP atual.

Valores de retorno:
O System.Web.HttpContext para a solicitação HTTP atual

Você pode obter o nome do usuário no ASP.NET MVC4 assim:

 System.Web.HttpContext.Current.User.Identity.Name 

Eu percebo que isso é muito antigo, mas estou apenas começando com a ASP.NET MVC, então pensei em colocar meus dois centavos em:

  • Request.IsAuthenticated informa se o usuário está autenticado.
  • Page.User.Identity lhe dá a identidade do usuário logado.

Eu uso:

 Membership.GetUser().UserName 

Não tenho certeza se isso funcionará no ASP.NET MVC, mas vale a pena tentar 🙂

ficando logado em nome de usuário: System.Web.HttpContext.Current.User.Identity.Name

A fim de fazer referência a um ID de usuário criado usando autenticação simples embutida no ASP.NET MVC 4 em um controlador para fins de filtragem (o que é útil se você estiver usando database primeiro e Entity Framework 5 para gerar ligações de primeiro código e suas tabelas são estruturadas assim que uma chave estrangeira para o userID é usada), você pode usar

 WebSecurity.CurrentUserId 

depois de adicionar uma instrução usando

 using System.Web.Security; 

UserName com:

 User.Identity.Name 

Mas se você precisar obter apenas o ID, poderá usar:

 using Microsoft.AspNet.Identity; 

Então, você pode obter diretamente o User ID:

 User.Identity.GetUserId(); 

Esta página pode ser o que você está procurando:
Usando Page.User.Identity.Name no MVC3

Você só precisa de User.Identity.Name .

Use System.Security.Principal.WindowsIdentity.GetCurrent().Name .

Isto irá obter o usuário atual do Windows logado.

Por que vale a pena, na ASP.NET MVC 3 você pode apenas usar o usuário que retorna o usuário para a solicitação atual.

Se você estiver dentro de sua página de login, no evento LoginUser_LoggedIn, por exemplo, Current.User.Identity.Name retornará um valor vazio, portanto, será necessário usar a propriedade yourLoginControlName.UserName.

 MembershipUser u = Membership.GetUser(LoginUser.UserName); 
 IPrincipal currentUser = HttpContext.Current.User; bool writeEnable = currentUser.IsInRole("Administrator") || ... currentUser.IsInRole("Operator"); 
 var ticket = FormsAuthentication.Decrypt( HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value); if (ticket.Expired) { throw new InvalidOperationException("Ticket expired."); } IPrincipal user = (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket)); 

Se você estiver trabalhando no Active Directory em uma intranet, veja algumas dicas:

(Windows Server 2012)

Executar qualquer coisa que fale com o AD em um servidor da Web requer muitas mudanças e paciência. Desde quando executado em um servidor web versus IIS / IIS Express local, ele é executado na identidade do AppPool, portanto, você precisa configurá-lo para representar quem acessa o site.

Como obter o atual usuário logado em um diretório ativo quando o aplicativo ASP.NET MVC estiver sendo executado em um servidor da Web dentro da rede:

 // Find currently logged in user UserPrincipal adUser = null; using (HostingEnvironment.Impersonate()) { var userContext = System.Web.HttpContext.Current.User.Identity; PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null, ContextOptions.Negotiate | ContextOptions.SecureSocketLayer); adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name); } //Then work with 'adUser' from here... 

É necessário que você envolva todas as chamadas relacionadas a ‘contexto de diretório ativo’ a seguir, para que ele funcione como o ambiente de hospedagem para obter as informações do AD:

 using (HostingEnvironment.Impersonate()){ ... } 

Você também deve ter configurado para true em seu web.config:

   

Você deve ter a autenticação do Windows no web.config:

  

Em Asp.net Mvc Identity 2, você pode obter o nome de usuário atual por:

 var username = System.Web.HttpContext.Current.User.Identity.Name; 

Podemos usar o código a seguir para obter o usuário logado no ASP.Net MVC:

 var user= System.Web.HttpContext.Current.User.Identity.GetUserName(); 

Além disso

 var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName' Environment.UserName - Will Display format : 'Username' 

Você pode usar o seguinte código:

 Request.LogonUserIdentity.Name;