如何使用MVC 4和“记住我”功能检查cookie?

时间:2013-05-21 12:44:04

标签: asp.net-mvc asp.net-mvc-4 remember-me

我使用较新的SimpleMembership模型创建了一个新的MVC 4 Web应用程序。 VS2012创建的“开箱即用”网站创建了帐户控制器和登录页面上的“记住我”复选框。但是,当我选中此框时,它不会记住我。

我是MVC的某些部分的新手,但似乎在我的AccountController中没有任何内容可以检查以前保存的cookie。我需要为此编写代码吗?我确实在另一个网站上找到了一个例子,但在我实现之前我想确保我正确地做到这一点。

对我来说,微软会将Remember Me功能自动化为新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);`

1 个答案:

答案 0 :(得分:1)

所以我想我想出来了。实际上并不是“记得我”失败了。事实上,我在登录时分配了会话变量,那些过期了。我增加了会话时间,但我还在关键位置编写了一些额外的代码来根据需要重新建立这些变量。而现在它似乎正在发挥作用。

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