Как я могу проверить куки, используя MVC 4 и функцию "Запомнить меня"?

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

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

Мне просто кажется странным, что Microsoft автоматизирует функцию "Помни меня" как часть нового веб-приложения 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);`

1 ответ

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

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

Другие вопросы по тегам