我的 Asp.net MVC 网站上有一个基本的身份验证系统
[HttpPost]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
WebSecurity.Login(model.UserName, model.Password, persistCookie: false)
return RedirectToAction("Index", "Home");
}
我还有一个UserInfoViewModel
类,我保留一些用户特定的信息,并在不同的页面上使用它。
为了避免UserInfoViewModel
每次我需要它时创建它,我想将它保存在登录方法的会话中。
public ActionResult Login(LoginViewModel model, string returnUrl)
{
WebSecurity.Login(model.UserName, model.Password, persistCookie: false)
var userInfoViewModel = new UserInfoViewModel();
Session["userInfo"] = userInfoViewModel;
return RedirectToLocal(returnUrl);
}
考虑到我有内部依赖的敏感信息UserInfoViewModel
,例如IsSuperuser
,将该对象保留在 Session 中是否安全?当用户登录会话过期时它也会过期吗?
解决方案
System.Security.Principal.IIdentity
正是为此而生。它保存了您需要的 AUTH cookie 自定义用户信息,因此您不必每次都重新计算它。
谢谢你的回答!