2013-05-21 3 views
1

Я создал новое веб-приложение MVC 4, используя новую модель SimpleMembership. Создание сайта «из коробки» VS2012 создает на странице регистрации контролер учетной записи и флажок «Запомнить меня». Но когда я устанавливаю этот флажок, это не помнит меня.Как проверить файл cookie с помощью MVC 4 и функции «Запомнить меня»?

Я новичок в некоторых частях MVC, но кажется, что в моем AccountController в области Login нет ничего, что бы проверить сохраненный файл cookie. Нужно ли мне писать код для этого? Я нашел пример этого на другом сайте, но прежде чем реализовать его, я хочу убедиться, что я делаю это правильно.

Мне просто кажется странным, что Microsoft автоматизирует функцию Remember Me как часть нового веб-приложения MVC 4, но не включает эту часть кода.

Для сохранения куки, я использую следующее, что я нашел на этом сайте:

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);` 
+0

WebSecurity (в MVC4) уже имеет функцию «Запомнить меня». См. WebSecurity.Login – LostInComputer

+0

Как сказал LostInComputer, метод WebSecurity.Login [уже разрешает сохранение cookie] (http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.login%28v=vs.111 % 29.aspx). Третий параметр называется 'persistCookie' и делает именно это. По умолчанию AccountController передает этому параметру значение свойства RememberMe в LogInModel. –

ответ

1

Так что я думаю, что я понял это. На самом деле это не было «помнить меня», что было неудачно. Это был факт, что я назначаю переменные сеанса при входе в систему, и они истекали. Я увеличил время сеанса, но я также написал некоторый дополнительный код в важных местах, чтобы восстановить эти переменные по мере необходимости. И теперь он работает.

Я был просто смущен, потому что я не видел никакого кода в Контроллере учетных записей, который искал файл cookie, а затем повторно регистрировался в нем. Из комментариев выше я предполагаю, что это присуще WebSecurity