JSESSIONID Cookie с датой истечения срока действия в Tomcat
Каков наилучший способ установить дату истечения срока действия файла cookie JSESSIONID, отправленного Tomcat для сеанса сервлета?
По умолчанию дата истечения срока действия файла cookie выглядит как "сеанс", а это означает, что сеанс исчезает на клиенте сразу после перезапуска браузера. Но я хотел бы оставить его открытым в течение 12 часов, даже после перезапуска браузера (и затем настроит тайм-аут сеанса на сервере соответственно).
Есть ли способ установить дату истечения срока действия в Tomcat, например. используя какой-либо вариант конфигурации или модуль расширения? Или существует надежный способ установить дату истечения срока действия JSESSIONID с использованием фильтра Servlet?
Ответы
Ответ 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