我正在使用ASP.NET MVC4 / Razor创建一个简单的登录。我需要自定义逻辑,所以这就是我到目前为止所拥有的:
public class User
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
public int UserID { get; set; }
public DateTime LastLogin { get; set; }
public bool IsValid(string username, string password)
{
if(MyCustomLogic.isValidUser(username, password)){
// Set other variables
return true;
} else {
return false;
}
}
}
在控制器中:
public ActionResult Login(Models.User user)
{
if (ModelState.IsValid)
{
if (user.IsValid(user.UserName, user.Password))
{
FormsAuthentication.SetAuthCookie(user.UserName, true);
// This line is in question
}
}
return View(user);
}
我想存储Model.User
,以便可以在View中持久访问它。将其存储在Session
变量中似乎是明显的选择,但它将独立于Authentication Cookie
而过期。
答案 0 :(得分:4)
我想你在问,你应该如何为后续请求存储用户?惯例是创建自己的IPrincipal
子类,您可以在其中存储您想要的任何内容,并将HttpContext.Current.User
设置为此实例。 This question has full examples