如何在 ASP.NET Core 上使用 Identity 登录后直接获取用户详细信息?

How do I get the user details straight after login using Identity on ASP.NET Core?

我正在使用 ASP.NET Core Identity 在我的网站上进行身份验证,我试图在他们登录后立即将用户 ID 记录到数据库,但我似乎无法使用以下代码访问它们。 GetResult() returns null 在这里,但如果它在下一页上它工作正常,但只是不在需要它的 OnPostAsync 方法中。 Input.UserIDOrLogonName不包含用户id。

private readonly SignInManager<User> _signInManager;
private readonly UserManager<User> _userManager;

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");
    if (ModelState.IsValid)
    {
        var result = await _signInManager.PasswordSignInAsync(Input.UserIDOrLogonName, Input.Password, Input.RememberMe, lockoutOnFailure: true);
        if (result.Succeeded)
        {
            var userId = _userManager.GetUserAsync(HttpContext.User)
                         .GetAwaiter().GetResult().UserId;
            _audit.RecordAction(AuditType.LoginSuccess, userId);
            return LocalRedirect(returnUrl);
        }

有没有其他方法可以访问用户实例?

对于HttpContext.User,它会在登录后对子请求起作用。

如果您想登录用户 ID,请尝试通过电子邮件查找用户,例如

if (result.Succeeded)
{
    var user = await _userManager.FindByEmailAsync(Input.Email);
    var userId = user.Id;
    _logger.LogInformation("User logged in.");
    return LocalRedirect(returnUrl);
}