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

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

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

<sessionState timeout="30" />

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

Ответ 1

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

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

Ответ 2

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

Это неверно. Тайм-аут cookie проверки подлинности будет только reset, если половина времени таймаута прошла.

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

      <sessionState timeout="2" />
      <authentication mode="Forms">
          <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
      </authentication>

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

Ответ 6

Для любого, кто сталкивается с этим вопросом, обратитесь к этой документации от 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-timeout-value