我将用户保存在我的数据库中,并且我使用Entity Framework 6来检索存储库中的用户。我正在使用MVC 5.
存储登录用户信息的最佳方式是什么,例如UserID,Email等。
使用会话变量或User.Identity
?
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var user = _uow.UserRepository.FindLogin(model.Email, model.Password);
if (user != null)
{
_uow.UserRepository.UpdateLastLoginDate(user);
_uow.SaveChanges();
return RedirectToAction("Index", "Administrator");
}
else
{
ModelState.AddModelError("", "Invalid Email Address or Password.");
}
}
return View(model);
}
答案 0 :(得分:1)
您不会在会话中存储此信息。首先,您需要使用此处所述的AuthenticationManager.SignIn方法 - http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity。然后,您可以使用.GetUserId()扩展方法从Identity对象中提取用户ID,如下所示:
User.Identity.GetUserId()
然后,您可以使用此ID从UserManager请求用户信息。如果您只需要UserName,您可以使用GetUserName扩展方法并直接从Identity对象中提取它。