validar usuarios usuario sesiones sesion obtener nombre net mvc mostrar manejo logueado inicio como autenticacion asp c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

usuarios - obtener usuario logueado c#



Obtenga el ID de usuario del usuario que iniciĆ³ sesiĆ³n en Asp.Net MVC 5 (1)

La respuesta está ahí en tu código. ¿Qué devuelve esto?

var userID = User.Identity.GetUserId();

Si está utilizando ASP.NET Identity, luego de iniciar sesión (y redirigir a otra página), IPrincipal.IIdentity debe ser una ClaimsIdentity . Puedes intentar esto:

var claimsIdentity = User.Identity as ClaimsIdentity; if (claimsIdentity != null) { // the principal identity is a claims identity. // now we need to find the NameIdentifier claim var userIdClaim = claimsIdentity.Claims .FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier); if (userIdClaim != null) { var userIdValue = userIdClaim.Value; } }

El bloque de código anterior no es exactamente, sino esencialmente, lo que hace el método de extensión IIdentity.GetUserId .

Si nada de esto funciona, es posible que el usuario aún no haya iniciado sesión en su sitio. Después de iniciar sesión, debe redirigir a otra página antes de que el servidor escriba la cookie de autenticación en el navegador. Esta cookie debe escribirse antes de que User.Identity tenga toda esta información de reclamos (incluido el NameIdentifier ) en solicitudes posteriores .

Soy relativamente nuevo en ASP.Net MVC y trato de usar ahora la funcionalidad de inicio de sesión de usuario incorporada. Puedo registrar un usuario en la vista de registro. Si trato de iniciar sesión con el usuario creado, esto también funciona. Me redirigen a la página maestra.

Pero no puedo obtener el ID de usuario del usuario actual. Probé mi código en HomeController y en AccountController, pero ninguno de los dos funcionó. La declaración en la primera línea devuelve siempre nulo.

var userID = User.Identity.GetUserId(); if (!string.IsNullOrEmpty(userID)) { var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ApplicationDbContext.Create())); var currentUser = manager.FindById(User.Identity.GetUserId()); }

¿Tengo que hacer algo más antes de obtener el ID de usuario?