Acabo de cambiar para usar la nueva versión 2.0 de Identity Framework. En 1.0 pude obtener un objeto de usuario usando manager.FindByIdAsync(User.Identity.GetUserId())
. El GetUserId()
método no parece existir en 2.0.
Ahora todo lo que puedo averiguar es usar manager.FindByEmailAsync(User.Identity.Name)
las referencias al campo de nombre de usuario en la tabla de usuarios. En mi aplicación, esto se establece igual que el campo de correo electrónico.
Puedo ver que esto causa problemas en el futuro cuando alguien necesita actualizar su correo electrónico. ¿Hay alguna manera de obtener el objeto de usuario que ha iniciado sesión actual basándose en un valor que no cambia (como el campo de identificación) en Identity 2.0 Framework?
c#
asp.net
asp.net-identity
Jasonpresley
fuente
fuente
Respuestas:
GetUserId()
es un método de extensión activadoIIdentity
y está enMicrosoft.AspNet.Identity.IdentityExtensions
. Asegúrese de haber agregado el espacio de nombres conusing Microsoft.AspNet.Identity;
.fuente
Para obtener CurrentUserId en Asp.net Identity 2.0, en la primera importación
Microsoft.AspNet.Identity
:C#:
using Microsoft.AspNet.Identity;
VB.NET:
Y luego llama a
User.Identity.GetUserId()
donde quieras:Este método devuelve el ID de usuario actual como el tipo de datos definido para el ID de usuario en la base de datos (el valor predeterminado es
String
).fuente
En caso de que sea como yo y el campo Id de la entidad de usuario sea un Int o algo más que una cadena,
using Microsoft.AspNet.Identity; int userId = User.Identity.GetUserId<int>();
hará el truco
fuente
Tuve el mismo problema. Actualmente estoy usando Asp.net Core 2.2. Resolví este problema con el siguiente código.
using Microsoft.AspNetCore.Identity; var user = await _userManager.FindByEmailAsync(User.Identity.Name);
Espero que esto le sea útil a alguien.
fuente