Em um modelo de formulários, eu costumava obter o usuário conectado atual:
Page.CurrentUser
Como obtenho o usuário atual dentro de uma classe de controlador no ASP.NET MVC?
Em um modelo de formulários, eu costumava obter o usuário conectado atual:
Page.CurrentUser
Como obtenho o usuário atual dentro de uma classe de controlador no ASP.NET MVC?
Respostas:
Se você precisar obter o usuário de dentro do controlador, use a User
propriedade Controller. Se você precisar do ponto de vista, eu preencheria o que você precisa especificamente no ViewData
, ou você pode simplesmente chamar Usuário, pois acho que é uma propriedade dele ViewPage
.
Descobri que User
obras, ou seja, User.Identity.Name
ou User.IsInRole("Administrator")
.
Imports System.Web
e ainda qualificar-se com com HttpContext.Current.User.Identity.Name
, ou diretamente qualificar usando a sintaxe completa:System.Web.HttpContext.Current.User.Identity.Name
Tente HttpContext.Current.User
.
Propriedade pública compartilhada Current () As System.Web.HttpContext
Membro de System.Web.HttpContextResumo:
Obtém ou define o objeto 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
'System.Web.HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'System.Web.HttpContextBase' could be found
, sugiro fazer uma chamada absoluta como esta System.Web.HttpContext.Current.User.Identity.Name
,.
Eu uso:
Membership.GetUser().UserName
Não tenho certeza se isso funcionará no ASP.NET MVC, mas vale a pena tentar :)
Para fazer referência a um ID de usuário criado usando autenticação simples incorporada ao ASP.NET MVC 4 em um controlador para fins de filtragem (o que é útil se você estiver usando o banco de dados primeiro e o Entity Framework 5 para gerar ligações primeiro ao código e suas tabelas estiverem estruturadas que uma chave estrangeira para o ID do usuário é usada), você pode usar
WebSecurity.CurrentUserId
depois de adicionar uma instrução using
using System.Web.Security;
System.Security.Principal.WindowsIdentity.GetCurrent().Name
funciona em MVC 5
. No entanto, isso abre o nome de domínio com o nome de usuário. ou seja, domínio \ nome de usuário
Podemos usar o seguinte código para obter o usuário conectado atual 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'
Nome de usuário com:
User.Identity.Name
Mas se você precisar obter apenas o ID, poderá usar:
using Microsoft.AspNet.Identity;
Portanto, você pode obter diretamente o ID do usuário:
User.Identity.GetUserId();
Esta página pode ser o que você está procurando:
Usando Page.User.Identity.Name no MVC3
Você só precisa User.Identity.Name
.
Use System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Isso obterá o usuário atual do Windows conectado.
Se você estiver dentro da sua página de login, no evento LoginUser_LoggedIn, por exemplo, Current.User.Identity.Name retornará um valor vazio; portanto, você deve usar a propriedade yourLoginControlName.UserName.
MembershipUser u = Membership.GetUser(LoginUser.UserName);
Você pode usar o seguinte código:
Request.LogonUserIdentity.Name;
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, aqui estão algumas dicas:
(Windows Server 2012)
A execução de qualquer coisa que converse com o AD em um servidor da web requer várias alterações e paciência. Como, quando executado em um servidor Web versus o IIS / IIS Express local, ele é executado na identidade do AppPool, é necessário configurá-lo para representar quem acessa o site.
Como obter o usuário conectado atual em um diretório ativo quando o aplicativo ASP.NET MVC estiver sendo executado em um servidor 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...
Você deve encerrar todas as chamadas relacionadas ao 'contexto do diretório ativo' a seguir, para que ele atue como o ambiente de hospedagem para obter as informações do AD:
using (HostingEnvironment.Impersonate()){ ... }
Você também deve ter impersonate
definido como true no seu web.config:
<system.web>
<identity impersonate="true" />
Você deve ter a autenticação do Windows ativada no web.config:
<authentication mode="Windows" />
No Asp.net Mvc Identity 2, você pode obter o nome de usuário atual:
var username = System.Web.HttpContext.Current.User.Identity.Name;
No Gerenciador do IIS, em Autenticação, desative: 1) Autenticação Anônima 2) Autenticação de Formulários
Em seguida, adicione o seguinte ao seu controlador, para lidar com teste versus implantação do servidor:
string sUserName = null;
string url = Request.Url.ToString();
if (url.Contains("localhost"))
sUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
else
sUserName = User.Identity.Name;