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

时间:2016-07-23 15:39:36

标签: 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);
}

1 个答案:

答案 0 :(得分:5)

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

使用

var user = _userManager.FindByEmailAsync(model.Email)
相反,在这种情况下