Подтвердить что ты не робот

JSESSIONID Cookie с датой истечения срока действия в Tomcat

Каков наилучший способ установить дату истечения срока действия файла cookie JSESSIONID, отправленного Tomcat для сеанса сервлета?

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

Есть ли способ установить дату истечения срока действия в Tomcat, например. используя какой-либо вариант конфигурации или модуль расширения? Или существует надежный способ установить дату истечения срока действия JSESSIONID с использованием фильтра Servlet?

4b9b3361

Ответ 1

В Servlet 3.0 это можно просто указать в файле web.xml:

<session-config>
    <session-timeout>720</session-timeout> <!-- 720 minutes = 12 hours -->
    <cookie-config>
        <max-age>43200</max-age> <!-- 43200 seconds = 12 hours -->
    </cookie-config>
</session-config>

Обратите внимание, что время session-timeout измеряется в минутах, а max-age - в секундах.

Ответ 2

Я не думаю, что можно делать то, что вы хотите, без изменения кода Tomcat.

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

Ответ 3

Если вы хотите, чтобы сеансы истекали через 12 часов и выдержали перезагрузку сервера, добавьте это в свой web.xml:

<session-config>
  <session-timeout>720</session-timeout>
</session-config>

Tomcat настроен по умолчанию на сеансы сериализации, чтобы перезагрузить приложение. См. http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence