登录后,当前用户始终为空

gar*_*hdn 2 asp.net asp.net-core

我遇到了一个问题,在我成功将用户签到我的应用程序后,我希望得到该用户.我的问题是用户总是如此null.奇怪的是,我在其他地方使用完全相同的方法来成功获取当前用户.

作为.NET的新手,我不确定为什么它不适合我.

var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);

if (result.Succeeded)
{
    EmailModel emailModel = new EmailModel {
        toEmail = model.Email,
        subject = " ",
        message = " "
    };

    var user = await _userManager.GetUserAsync(HttpContext.User);

    // user here is always null
    await _emailService.SendTestEmail(emailModel, user);

    return RedirectToLocal(returnUrl);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*son 5

您正在尝试从HttpContext中查找用户,但是当为控制器设置了HttpContext时,User为null,因为在实例化控制器时它尚不存在.

使用

var user = _userManager.FindByEmailAsync(model.Email)
Run Code Online (Sandbox Code Playgroud)

相反,在这种情况下