MVC Webサイトでフォーム認証を使用していて、Cookieを追加する際に問題があります。暗号化されたフォーム認証チケットを使用してCookieに追加していますが、 「なAuthCookieを」)の名前が、値は常にnullで、日付が常に「01/01/0001夜12時」に設定されている有効期限...ここに私のログインコントローラのコードです:最初はMVC 3クッキーが動作しない
[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);
}
私は仮定しました暗号化された文字列は長さのために動作していませんでしたが、私は単純なテストを作成してこれをテストしましたが、私は同じ結果を得ています。
は、誰もがあなたがリダイレクト()またはRedirectToAction()を呼び出すと、クッキーがクライアントに送信されないように、あなたが応答を終了している
FormsAuthentication.SetAuthCookie()を使用していない理由はありますか? – rfmodulator
SetAuthCookie()を使用すると、UserDataにアクセスすることはできません.IPRincipalとIIdentityのUserRoleとその他のオプションのデータを格納するために使用します。 –
です。クライアントにロールデータを保存することをお勧めしますか? :)暗号化されているか、そうでなければ。 – rfmodulator