在我的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不可用。