我使用MVC網站的表單身份驗證,我有一個問題,添加餅乾,我使用加密的表單身份驗證票並將其添加到Cookie,但在檢查我的餅乾時,它是在那裏(由命名「AuthCookie」),但價值總是空和過期日期始終設置爲「01/01/0001 00:00」 ......這是我的登錄控制器代碼: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);
}
起初我以爲由於長度的原因,加密的字符串不工作,但我已經通過創建一個簡單的測試庫來測試了這一點,並且我得到了相同的結果。
誰能幫
是否有你沒有使用FormsAuthentication.SetAuthCookie()的原因? – rfmodulator 2012-01-02 00:13:26
使用SetAuthCookie()你沒有訪問userData ...我將用它來存儲UserRole和其他可選數據IPrincipal和IIdentity – 2012-01-02 00:15:52
我明白了。我不確定是否將角色數據存儲在客戶端上是一個好主意。 :)加密或以其他方式。 – rfmodulator 2012-01-02 00:17:35