User.Identity.GetUserId()在AccountsController中返回null,但在HomeController中工作正常

时间:2018-02-12 06:03:46

标签: c# asp.net-mvc

在我的MVC5 ASP.NET C#应用程序中,我想在会话中存储一些重要但临时数据。为此我尝试在收到登录成功时设置会话如下: -

public class AccountController: Controller
{
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
    .
    .
    var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.rememberMe, shouldLockout= false);

    switch (result){
        case SignInStatus.Success:
            var user =  UserManager.FindById(User.Identity.GetUserId());
            return RedirectToLocal(returnUrl);
        .
        .
        }
}

虽然此失败,但在User.Identity.GetUserId()内调用HomeController会返回正确的结果。

任何人都可以解释为什么会这样,以及如何在登录后获得当前用户以便设置会话。

更新

我现在使用方法UserManager.FindBynameAsync(model.UserName)检索了User对象。但是,尽管SignIn成功,我仍然无法弄清楚为什么UserId不可用。

0 个答案:

没有答案