我是一个 PHP 人,但正在 ASP.NET MVC4 中制作一个登录页面。我期望在会话中存储用户的 ID、用户名和角色。到目前为止,我正在做的事情如下。如果我是正确的,它会使用用户名保存 cookie。
[HttpPost]
public ActionResult Login(Models.UserLoginModel user)
{
if (ModelState.IsValid)
{
Models.User u = new Models.User();
if (u.IsValid(user.Username, user.Password))
{
FormsAuthentication.SetAuthCookie(user.Username, user.RememberMe);
return RedirectToAction("Index", "Accounts");
}
else
{
ModelState.AddModelError("", "Login data is incorrect!");
}
}
return View(user);
}
我的兴趣是存储更多信息并控制验证时间。我被建议并要求使用 FormAuthenticationTicket
类。我替换FormsAuthentication.SetAuthCookie(user.Username, user.RememberMe);
为
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket
(
1,
user.Username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
"Some User Data",
FormsAuthentication.FormsCookiePath
);
Response.Cookies.Add
(
new HttpCookie
(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket)
)
);
它看起来很酷,但我没有测试它,具有灵活性。但问题是我如何才能收到这些信息。
如何获取这些信息并确定用户是否已登录以及保存在FormsAuthenticationTicket
.
提前致谢。