使用MVC4进行身份验证后存储用户数据

时间:2014-03-24 10:53:36

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在使用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而过期。

1 个答案:

答案 0 :(得分:4)

我想你在问,你应该如何为后续请求存储用户?惯例是创建自己的IPrincipal子类,您可以在其中存储您想要的任何内容,并将HttpContext.Current.User设置为此实例。 This question has full examples