MVC Webサイトでフォーム認証を使用していますが、Cookieの追加に問題があります。暗号化されたフォーム認証チケットを使用して、Cookieに追加していますが、Cookieを検査すると(「AuthCookie」という名前で)存在しますが、値はは常にnullであり、有効期限は常に「01/01/000100:00」に設定されます...これが私のログインコントローラーコードです。
[HttpPost]
public ActionResult Index(Login login, string returnUrl)
{
if (ModelState.IsValid)
try
{
User user = UserManager.Login(login.Username, login.Password);
string serialUser = Serialize.SerializeToString(user);
string ticket = FormsAuthentication.Encrypt(
new FormsAuthenticationTicket(1, login.Username, DateTime.Now, DateTime.Now.AddMinutes(20.0), login.RemeberMe, serialUser));
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticket) { Expires = DateTime.Now.AddMinutes(20) };
Response.Cookies.Add(cookie);
if (String.IsNullOrEmpty(returnUrl))
return RedirectToAction("Index", "Home");
else
return Redirect(returnUrl);
}
catch (LoginFailedException)
{
ModelState.AddModelError("", "Login failed: Invalid Username or Password.");
return View(login);
}
else
return View(login);
}
最初は、暗号化された文字列が長さのために機能していないと思いましたが、簡単なテストクックを作成してこれをテストしたところ、同じ結果が得られました。
誰でも助けることができます