Формує тайм-аут аутентифікації та сеанс


139

У мене є код, який я переглядаю щодо часу виходу сеансу на веб-сайт. У web.config я натрапив на цей код.

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

<sessionState timeout="30" />

Хтось знає, чи є один прецедент над іншим, і чим вони відрізняються. Дякую.


Відповіді:


226

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

Значення SessionStateтайм-ауту встановлює кількість часу, необхідного постачальнику держав сеансу для зберігання даних у пам'яті (або будь-якого резервного накопичувача, SQL Server, OutOfProc тощо) для певного сеансу. Наприклад, якщо ви помістите об’єкт у Session, використовуючи значення у вашому прикладі, ці дані будуть видалені через 30 хвилин. Користувач може все ще бути автентифікованим, але дані в сесії можуть більше не бути. Session TimeoutЗначення завжди скидається після кожного запиту.


26
Одне уточнення: тайм-аут автентифікації форм встановлює час закінчення терміну дії квитка, не обов'язково для файлу cookie, де може зберігатися квиток. У файлу cookie взагалі немає часу закінчення терміну дії (заплутано називається сесійним файлом cookie, що означає, що він триває, поки користувач не закриє веб-переглядач), або взагалі може бути файлом cookie ("cookieless" форми автентифікації). У разі постійного файлу cookie автентифікація форм встановлює термін дії файлу cookie та термін дії квитка одночасно.
bmode

13
Ще одне уточнення від MSDN: "Для запобігання порушеній продуктивності та уникнення кількох попереджень браузера для користувачів, у яких увімкнено попередження про файли cookie, файл cookie оновлюється, коли минуло більше половини зазначеного часу." Таким чином, час очікування файлу cookie скидається лише в тому випадку, якщо він наполовину перевищив. Звідси випливає пропозиція встановити його на 2 рази таймаут сеансу.
user917170

21

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

Це неправильно. Час очікування файлу cookie автентичності буде скинуто лише тоді, коли минуло половину часу очікування.

Дивіться, наприклад, https://support.microsoft.com/de-ch/kb/910439/en-us або https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -час вийшов/


18

Як я розумію, вони незалежні одна від одної. Зберігаючи тайм-аут сеансу менше або рівний тайм-ауту аутентифікації, ви можете переконатися, що будь-які змінні сеанси, характерні для користувача, не зберігаються після вичерпання часу аутентифікації (якщо це викликає ваше занепокоєння, на мою думку, це нормальне запитання про це питання). Звичайно, вам доведеться вручну обробляти розміщення змінних сеансу після виходу.

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


7

Різниця полягає в тому, що одне (час очікування форми) має відношення до автентифікації користувача, а інше (час очікування сесії) пов'язане з тим, як довго зберігаються кешовані дані на сервері. Отже, це дуже незалежні речі, тому одна не має переваги над іншою.


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

Ця конфігурація надсилає мене на сторінку входу кожні дві хвилини, що, здається, суперечить попереднім відповідям


1
Це може статися, якщо інформація, що стосується входу, зберігається у змінних сеансу, і коли це очищається, вона перенаправляє на вхід. Так це залежить від коду?
Стів

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- timeout-value

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.