En un modelo de formas, que utiliza para obtener la corriente usuario conectado por:¿Cómo obtener el usuario actual en ASP.NET MVC
Page.CurrentUser
¿Cómo consigo el usuario actual dentro de una clase de controlador de ASP.NET MVC?
En un modelo de formas, que utiliza para obtener la corriente usuario conectado por:¿Cómo obtener el usuario actual en ASP.NET MVC
Page.CurrentUser
¿Cómo consigo el usuario actual dentro de una clase de controlador de ASP.NET MVC?
Si usted necesita para obtener el usuario desde el controlador, utilice la propiedad User
del controlador. Si lo necesita de la vista, rellenaría lo que necesita específicamente en el ViewData
, o simplemente podría llamar al Usuario ya que creo que es una propiedad de ViewPage
.
que utilizo:
Membership.GetUser().UserName
No estoy seguro de que esto funcionará en ASP.NET MVC, pero vale la pena un tiro :)
dónde viene esta clase de membresía viene? IntelliSense no lo reconoce de manera predeterminada. –
El espacio de nombres System.Web.Security. No estoy seguro de que esto sea útil en MVC, pero lo uso con los controles de inicio de sesión para formularios web. – Sean
Es útil en cualquier aplicación ASP.NET que use los proveedores de Membresía. – jamiebarrow
Trate HttpContext.Current.User
.
pública compartida propiedad actual() Como System.Web.HttpContext
miembro de System.Web.HttpContextResumen:
Obtiene o establece el objeto System.Web.HttpContext para el HTTP actual solicitud.Valores de retorno:
El System.Web.HttpContext para el actual solicitud HTTP
Aparentemente HttpContext no tiene una propiedad llamada "Actual". –
Creo que ustedes dos están hablando de dos cosas diferentes. System.Web.HttpContext y la propiedad estática: System.Web.Mvc.Controller.HttpContext (que no tiene una propiedad "Actual". –
Eso funcionó en un entorno que no es MVC, justo lo que necesitaba. ¡Gracias !:) – wdanda
me di cuenta que es muy viejo, pero me acaba de empezar con ASP.NET MVC, así que pensé que gustaría poner mi granito de arena en:
Request.IsAuthenticated
le indica si el usuario es autenticado .Page.User.Identity
le da la identidad del usuario que ha iniciado sesión.encontré que User
obras, es decir, User.Identity.Name
o User.IsInRole("Administrator")
.
Gran ayuda. Estoy en MVC3 –
Solo para agregar a esto, si estás trabajando en una clase fuera de un formulario necesitarás 'Imports System.Web' y calificar más con' HttpContext.Current.User.Identity.Name' o califica directamente usando la sintaxis completa: 'System.Web.HttpContext.Current.User.Identity.Name' – Paul
Funciona dentro de un Controlador y si usa un ViewModel hereda de Controller o sigue la sugerencia de Paul. – usefulBee
cómo cerrar la sesión en nombre de usuario: System.Web.HttpContext.Current.User.Identity.Name
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
Por lo que vale la pena, en ASP.NET MVC 3 sólo puede utilizar por el usuario que devuelve al usuario de la solicitud actual.
Si está dentro de su página de inicio de sesión, en el evento LoginUser_LoggedIn por ejemplo, Current.User.Identity.Name devolverá un valor vacío, por lo que debe usar su propiedadLoginControlName.UserName.
MembershipUser u = Membership.GetUser(LoginUser.UserName);
Esta página podría ser lo que busca:
Using Page.User.Identity.Name in MVC3
Sólo necesita User.Identity.Name
.
Esto funciona solo dentro de un controlador; o si su ViewModel hereda del Controlador – usefulBee
Para hacer referencia a una ID de usuario creada con autenticación simple integrada en ASP.NET MVC 4 en un controlador con fines de filtrado (que es útil si está utilizando primero la base de datos y Entity Framework 5 para generar enlaces primero y sus tablas están estructuradas para que se use una clave externa para el ID de usuario), puede usar
WebSecurity.CurrentUserId
vez que se agrega una declaración utilizando
using System.Web.Security;
Desafortunadamente esto parece no funcionar más en MVC 5. No estoy seguro por qué =/ –
Solo 'System.Security.Principal.WindowsIdentity.GetCurrent(). Name' funciona en' MVC 5'. Sin embargo, eso levanta el nombre de dominio con el nombre de usuario. es decir, dominio \ nombre de usuario – shaz
usted puede obtener el nombre del usuario en ASP.NET MVC4 así:
System.Web.HttpContext.Current.User.Identity.Name
Si obtiene este error ''System.Web.HttpContextBase' no contiene una definición para 'Actual' y ningún método de extensión 'Actual' aceptando un primer argumento de tipo 'System.Web.HttpContextBase' podría ser found', sugiero hacer una llamada absoluta como esta, 'System.Web.HttpContext.Current.User.Identity.Name'. –
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));
Utilice System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Esto obtendrá el usuario actual de Windows conectado.
Si bien este código puede responder la pregunta, sería mejor incluir algún contexto, explicar cómo funciona y describir cuándo usarlo. Las respuestas de solo código no son útiles a largo plazo. – ryanyuyu
System.Security.Principal.WindowsIdentity.GetCurrent(). Name devuelve el usuario actual conectado a Windows, el OP está solicitando el usuario actualmente conectado al sitio web. – GrandMasterFlush
Si le sucede a estar trabajando en Active Directory en una intranet, he aquí algunos consejos:
(Windows Server 2012)
Ejecución de todo lo que habla a AD en un servidor web requiere un montón de cambios y paciencia. Dado que cuando se ejecuta en un servidor web frente a IIS/IIS Express local, se ejecuta en la identidad de la AppPool, por lo que debe configurarse para suplantar a quien acceda al sitio.
Cómo conseguir el actual usuario registrado en un directorio activo cuando su aplicación ASP.NET MVC se ejecuta en un servidor web dentro de la red:
// 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...
Usted debe envolver todas las llamadas que tienen que ver con 'contexto de directorio activo' en la siguiente por lo que está actuando como el entorno de alojamiento para obtener la información AD:
using (HostingEnvironment.Impersonate()){ ... }
también debe tener impersonate
conjunto de cierto en su web.config:
<system.web>
<identity impersonate="true" />
Debe tener la autenticación de Windows en web.config en:
<authentication mode="Windows" />
¿Funciona esto cuando
No lo creo, ya que esto está usando explícitamente sus credenciales de usuario de Active Directory. ¿Por qué tendrías 'Formularios' si deseas que tus usuarios se autentiquen a través de AD? –
En nuestra organización, hay ubicaciones en las que tenemos un par de estaciones de trabajo compartidas por varios empleados de "campo". Por eso, estamos obligados a agregar la página de inicio de sesión a nuestras aplicaciones web de Intranet. –
username por:
User.Identity.Name
Pero si usted necesita para obtener sólo el ID, puede utilizar:
using Microsoft.AspNet.Identity;
Por lo tanto, puede obtener directamente el ID de usuario:
User.Identity.GetUserId();
Este método devuelve un ** System.Guid ** –
User.Identity.Name es una instancia de System.Security.Principal.IPrincipal que no tiene una propiedad de id ... ¿Es este usuario diferente de User.Identity.GetUserId ' s Objeto de usuario – Samra
Puede utilizar siguiente código:
Request.LogonUserIdentity.Name;
En Asp.net MVC Identidad 2, se puede obtener el nombre de usuario actual por:
var username = System.Web.HttpContext.Current.User.Identity.Name;
Podemos utilizar siguiente código para obtener el usuario registrado actualmente en ASP.MVC neto:
var user= System.Web.HttpContext.Current.User.Identity.GetUserName();
también
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName'
Environment.UserName - Will Display format : 'Username'
"o simplemente puede llamar al Usuario porque creo que es propiedad de ViewPage" - ¿Quiere decir utilizar Page.user cuando está en la vista? – mawaldne
Sí, puede usarlo como "Hola, @ User.Identity.Name!" en el cshtml. – Sean