Mvc Core Obtenga UserId después de ExternalLoginSignInAsync

asp.net-core-mvc asp.net-identity asp.net-mvc c# dapper

Pregunta

Ingreso a mi usuario a través de una tercera parte como google de la siguiente manera:

var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false);

Si lo anterior tiene éxito porque existen, ¿cómo puedo capturar el ID de usuario del usuario que inició sesión? El ID de usuario es el ID de usuario que se encuentra en mi base de datos en la tabla Usuarios, no será nada que provenga del proveedor de inicio de sesión de terceros.

es posible? Parece que no puedo encontrar ninguna función u objeto que me permita recuperarlo en este punto. Pensé que tal vez saldría del User Object, pero según tengo entendido, proviene del HttpContext que en este momento no tendría registrado al usuario como usuario registrado, al menos no hasta que actualice la página. También me gustaría evitar el redireccionamiento a otra página solo para este propósito.

Nota: Estoy usando Dapper y no hay rastros de EF en mi proyecto. No estoy seguro de cuánto importará esto.

Respuesta aceptada

ExternalLoginSignInAsync llamadas internas

var user = await UserManager.FindByLoginAsync(loginProvider, providerKey);

Entonces, podrías hacer lo mismo:

var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false);

if (result = IdentityResult.Success)
{
    var user = await _userManager.FindByLoginAsync(info.LoginProvider, info.ProviderKey);
}

Recuerde siempre que ASP.NET Core es de código abierto, por lo que la mayoría de las veces lo más rápido es mirar la implementación predeterminada.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué