Управление истечением срока действия FormsAuthentication createPersistentCookie - PullRequest
15 голосов
/ 20 сентября 2010

В приложении ASP.NET MVC2 у нас есть стандартное действие входа в систему ...

if (ValidateUser(model.Email, model.Password)
{
  FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
  ...

, где второй параметр SetAuthCookie - createPersistentCookie со следующей документацией:

createPersistentCookie
  Type: System.Boolean
    true to create a persistent cookie
    (one that is saved across browser sessions); otherwise, false.

Мы бы хотели, чтобы срок действия постоянных файлов cookie истекал через 2 недели (т. Е. Пользователь мог вернуться на сайт в течение 2 недель, и ему не нужно было бы проходить повторную аутентификацию. По истечении этого времени ему будет предложено снова войти в систему).

Как установить срок действия постоянного файла cookie?

1 Ответ

36 голосов
/ 20 сентября 2010

Разве вы не можете этого сделать?

<system.web>
    <authentication mode="Forms">
          <forms timeout="20160"/>
    </authentication>
</system.web>

Время ожидания указывается в минутах.

Это значение тайм-аута не зависит от того, создаете ли вы постоянный файл cookie. В нем просто говорится, что если вы явно не прекратите использование файла cookie (FormsAuthentication.SignOut), он автоматически истечет через заданный период времени.

Другими словами, если вы делаете:

FormsAuthentication.SetAuthCookie(someMembershipName, false);

В результате истекает срок действия файла cookie, когда:

  • Пользователь закрывает браузер или
  • Тайм-аут достигнут.

В отличие от того, что вы делаете:

FormsAuthentication.SetAuthCookie(someMembershipName, true);

В результате истечение срока действия файла cookie истечет.

НТН

EDIT

Взять с MSDN :

атрибут timeout описывается следующим образом:

Указывает время в целых числах минут, после чего печенье истекает. Если SlidingExpiration атрибут true, время ожидания атрибут является скользящим значением, срок действия которого истекает в указанное количество минут после того, как последний запрос был получен. Для предотвращения взлома производительность, и чтобы избежать множественного предупреждения браузера для пользователей, которые имеют cookie предупреждения включены, cookie обновляется, когда более половины указанное время истекло. Это может вызвать потерю точности. По умолчанию «30» (30 минут).

Примечание. В ASP.NET V1.1 постоянно время ожидания файлов cookie не зависит от настройка атрибута тайм-аута. Однако, начиная с ASP.NET V2.0, постоянные куки делают тайм-аут согласно атрибуту времени ожидания .

Другими словами, этот параметр срока действия обрабатывает только файл cookie проверки подлинности с помощью форм.

Файл cookie для проверки подлинности с помощью форм - это файл cookie на стороне клиента, он не имеет ничего общего с другим сеансом на стороне сервера, который у вас может быть (например, с корзиной покупок).

Этот сеанс истек со следующей настройкой:

<sessionstate 
      mode="inproc"
      cookieless="false" 
      timeout="20" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...