私は 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)
)
);
クールに見えますが、テストはしていませんが、柔軟性があります。しかし問題は、この情報をどのように受け取るかです。
これらの情報を取得して、ユーザーがログインしているかどうか、および .xml 内に保存されているその他の必要な情報を確認するにはどうすればよいですかFormsAuthenticationTicket
。
前もって感謝します。