我使用较新的 SimpleMembership 模型创建了一个新的 MVC 4 Web 应用程序。VS2012 创建的“开箱即用”站点创建了帐户控制器和登录页面上的“记住我”复选框。但是当我选中这个框时,它不记得我了。
我对 MVC 的某些部分不熟悉,但我的 AccountController 中的登录区域似乎没有任何内容可以检查以前保存的 cookie。我需要为此编写代码吗?我确实在另一个网站上找到了一个例子,但在我实施之前,我想确保我做对了。
在我看来,微软将自动记住我功能作为新的 MVC 4 Web 应用程序的一部分,但不包括该部分代码,这对我来说似乎很奇怪。
为了保存 cookie,我使用了在此站点上找到的以下内容:
FormsAuthentication.SetAuthCookie(model.UserName, true);
int timeout = model.RememberMe ? 525600 : 30; // Timeout in minutes, 525600 = 365 days.
var ticket = new FormsAuthenticationTicket(model.UserName, model.RememberMe, timeout);
string encrypted = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
cookie.Expires = System.DateTime.Now.AddMinutes(52000);// timeout
cookie.HttpOnly = true; // cookie not available in javascript.
Response.Cookies.Add(cookie);`