У меня есть код, который я просматриваю относительно тайм-аутов сеанса на веб-сайте. В web.config я наткнулся на этот код.
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
Кто-нибудь знает, имеет ли один прецедент над другим и чем они отличаются. Спасибо.
asp.net
session
web-config
Лаки Люк2
источник
источник
Ответы:
Это разные вещи. Значение времени ожидания проверки подлинности с помощью форм устанавливает время в минутах, в течение которого файл cookie проверки подлинности устанавливается как действительный, что означает, что по прошествии определенного
value
количества минут срок действия файла cookie истечет, и пользователь больше не будет проходить проверку подлинности - они будут перенаправлены на учетную запись страницу автоматически.slidingExpiration=true
Значение в основном говорят , что до тех пор , пока пользователь делает запрос в течение таймаута, они будут продолжать проходить проверку подлинности (подробнее здесь ). Если вы установитеslidingExpiration=false
аутентификационный куки-файл, срок его действия истечет через определенноеvalue
количество минут, независимо от того, делает ли пользователь запрос в пределах установленного тайм-аута или нет.Значение
SessionState
тайм-аута устанавливает количество времени, которое требуется провайдеру состояния сеанса для хранения данных в памяти (или в любом другом используемом резервном хранилище, SQL Server, OutOfProc и т. Д.) Для определенного сеанса. Например, если вы поместите объект в сеанс, используя значение в вашем примере, эти данные будут удалены через 30 минут. Пользователь все еще может быть аутентифицирован, но данные в сеансе могут больше не присутствовать.Session Timeout
Значение всегда сбрасывается после каждого запроса.источник
Это не так. Тайм-аут аутентификационного файла cookie будет сброшен только по истечении половины времени тайм-аута.
См., Например, https://support.microsoft.com/de-ch/kb/910439/en-us или https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -timeout /
источник
Насколько я понимаю, они независимы друг от друга. Удерживая тайм-аут сеанса меньше или равным таймауту аутентификации, вы можете убедиться, что какие-либо пользовательские переменные сеанса не сохраняются после тайм-аута аутентификации (если это вас беспокоит, что я считаю нормальным, когда спрашиваете об этом вопрос). Конечно, вам придется вручную обрабатывать удаление переменных сеанса после выхода из системы.
Вот достойный ответ, который может ответить на ваш вопрос или, по крайней мере, указать вам правильное направление:
источник
Разница в том, что один (тайм-аут форм) связан с аутентификацией пользователя, а другой (тайм-аут сеанса) связан с тем, как долго кэшированные данные хранятся на сервере. Так что это очень независимые вещи, поэтому одно не имеет приоритета над другим.
источник
<sessionState timeout="2" /> <authentication mode="Forms"> <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/> </authentication>
Эта конфигурация отправляет меня на страницу входа каждые две минуты, что, кажется, противоречит предыдущим ответам.
источник
Для тех, кто наткнулся на этот вопрос, обратитесь к этой документации от 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- значение тайм-аута
источник