1

我使用较新的 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);`
4

1 回答 1

1

所以我想我想通了。实际上,失败的不是“记住我”。事实上,我在登录时分配了会话变量,而这些变量即将到期。我增加了会话时间,但我还在关键位置编写了一些额外的代码,以便根据需要重新建立这些变量。现在它似乎正在工作。

我只是感到困惑,因为我没有在帐户控制器中看到任何查找 cookie 然后重新登录该人的代码。从上面的评论中,我认为这是 WebSecurity 所固有的

于 2013-05-22T16:22:25.643 回答