28

Tomcatがサーブレットセッション用に送信するJSESSIONIDCookieの有効期限を設定する最良の方法は何ですか?

デフォルトでは、Cookieの有効期限は「セッション」のように見えます。これは、ブラウザが再起動するとすぐにセッションがクライアントに表示されなくなることを意味します。ただし、ブラウザを再起動した後でも、12時間開いたままにしておきたいと思います(それに応じてサーバーでセッションタイムアウトを構成します)。

構成オプションや拡張モジュールを使用するなど、Tomcat内で有効期限を設定する方法はありますか?または、サーブレットフィルタを使用してJSESSIONIDの有効期限を設定する信頼できる方法はありますか?

4

2 に答える 2

62

サーブレット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測定されますが、秒単位で測定されることに注意してください。

于 2012-03-27T14:53:41.057 に答える
-1

Tomcat コードを変更せずに、やりたいことを実行することはできないと思います。

ただし、厄介な副作用がある可能性があることに注意してください。ユーザーがセッションを開始して 12 時間アクティブなままである場合、それに応じてセッションのタイムアウトが更新されます (タイムアウトは要求ごとに更新されます) が、Cookie は更新されず、したがって、ユーザーは、たとえずっとアクティブだったとしても、12 時間後にセッションを失います。

于 2011-02-08T13:08:03.790 に答える