Тайм-аут аутентификации форм против тайм-аута sessionState

143

У меня есть код, который я просматриваю относительно тайм-аутов сеанса на веб-сайте. В web.config я наткнулся на этот код.

 <authentication mode="Forms">
  <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>

<sessionState timeout="30" />

Кто-нибудь знает, имеет ли один прецедент над другим и чем они отличаются. Спасибо.

Лаки Люк2
источник
Возможный дубликат
тайм-аута

Ответы:

233

Это разные вещи. Значение времени ожидания проверки подлинности с помощью форм устанавливает время в минутах, в течение которого файл cookie проверки подлинности устанавливается как действительный, что означает, что по прошествии определенного valueколичества минут срок действия файла cookie истечет, и пользователь больше не будет проходить проверку подлинности - они будут перенаправлены на учетную запись страницу автоматически. slidingExpiration=trueЗначение в основном говорят , что до тех пор , пока пользователь делает запрос в течение таймаута, они будут продолжать проходить проверку подлинности (подробнее здесь ). Если вы установите slidingExpiration=falseаутентификационный куки-файл, срок его действия истечет через определенное valueколичество минут, независимо от того, делает ли пользователь запрос в пределах установленного тайм-аута или нет.

Значение SessionStateтайм-аута устанавливает количество времени, которое требуется провайдеру состояния сеанса для хранения данных в памяти (или в любом другом используемом резервном хранилище, SQL Server, OutOfProc и т. Д.) Для определенного сеанса. Например, если вы поместите объект в сеанс, используя значение в вашем примере, эти данные будут удалены через 30 минут. Пользователь все еще может быть аутентифицирован, но данные в сеансе могут больше не присутствовать. Session TimeoutЗначение всегда сбрасывается после каждого запроса.

Икар
источник
28
Одно пояснение: тайм-аут проверки подлинности форм устанавливает время истечения срока действия билета, не обязательно для файла cookie, в котором может храниться билет. Файл cookie может вообще не иметь срока действия (ошибочно называется сеансовым файлом cookie, что означает, что он длится до тех пор, пока пользователь не закроет браузер), или может вообще не быть cookie (аутентификация с помощью форм без файлов cookie). В случае постоянного файла cookie проверка подлинности с помощью форм устанавливает срок действия файла cookie и срок действия билета на одно и то же время.
bmode 06
14
Еще одно пояснение от MSDN: «Чтобы предотвратить снижение производительности и избежать множественных предупреждений браузера для пользователей, у которых включены предупреждения о файлах cookie, файл cookie обновляется по истечении более половины указанного времени». Таким образом, время ожидания cookie сбрасывается только в том случае, если оно истекло наполовину. Следовательно, предлагается установить его в 2 раза больше тайм-аута сеанса.
user917170
22

Значение slideExpiration = true в основном означает, что после каждого сделанного запроса таймер сбрасывается, и пока пользователь делает запрос в пределах значения тайм-аута, он будет продолжать аутентификацию.

Это не так. Тайм-аут аутентификационного файла cookie будет сброшен только по истечении половины времени тайм-аута.

См., Например, https://support.microsoft.com/de-ch/kb/910439/en-us или https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -timeout /

Сильван Хофер
источник
18

Насколько я понимаю, они независимы друг от друга. Удерживая тайм-аут сеанса меньше или равным таймауту аутентификации, вы можете убедиться, что какие-либо пользовательские переменные сеанса не сохраняются после тайм-аута аутентификации (если это вас беспокоит, что я считаю нормальным, когда спрашиваете об этом вопрос). Конечно, вам придется вручную обрабатывать удаление переменных сеанса после выхода из системы.

Вот достойный ответ, который может ответить на ваш вопрос или, по крайней мере, указать вам правильное направление:

Однобокий
источник
7

Разница в том, что один (тайм-аут форм) связан с аутентификацией пользователя, а другой (тайм-аут сеанса) связан с тем, как долго кэшированные данные хранятся на сервере. Так что это очень независимые вещи, поэтому одно не имеет приоритета над другим.

Карл Андерсон
источник
5
      <sessionState timeout="2" />
      <authentication mode="Forms">
          <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
      </authentication>

Эта конфигурация отправляет меня на страницу входа каждые две минуты, что, кажется, противоречит предыдущим ответам.

шласаша
источник
2
Это может произойти, если информация, связанная с входом в систему, хранится в переменных сеанса, и когда она очищается, выполняется перенаправление на вход в систему. Так это зависит от кода?
Стив
0

Для тех, кто наткнулся на этот вопрос, обратитесь к этой документации от MS - в ней есть действительно хорошие сведения о настройке времени ожидания FormsAuthentication.

В этом документе подробно объясняется комментарий, который bmode делает в принятом ответе - о постоянном cookie (сеанс против истечения срока действия).

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- значение тайм-аута

Нарен
источник