1

私のアプリケーションの一部には、オーバーヘッド ステータス ボード用の 1 つのページ ビューがあります。オーバーヘッド ディスプレイを実行するサーバーへのアクセスは、少数の重要人物のみがアクセスできるアクセス制御された場所にあります。私が直面している問題は、一定の時間が経過するとセッションが期限切れになり、誰かが物理的にサーバーにアクセスしてページをリロードする必要があることです。言うまでもなく、重要な人物がいない場合、これはいくつかの問題を引き起こします。

このアプリケーションは Tomcat で実行され、セキュリティは Spring セキュリティによって制御されます。このページのみのセッション タイムアウトを変更するにはどうすればよいですか?

[編集]

@sotirios-delimanolis が提案したアプローチを採用しました。ユーザーがこのページに移動してから別のページに移動した場合、延長されたセッション タイムアウトを元に戻すエレガントな方法を見つける必要がありますが、これはうまくいくようです。

以下は、これを実装するコードの関連スニペットです。

    @RequestMapping(value="BigBoard", method = RequestMethod.GET) 
    public void getBigBoard(HttpServletRequest request, Model model) {

         HttpSession session = request.getSession();
         session.setMaxInactiveInterval(604800);
4

2 に答える 2

1

コントローラー、リソースプロバイダーなどによってページがどのようにアクセスされるかはわかりませんが、基本的に次のことを行ったそのリクエストの処理のどこかに、、、またはハンドラーメソッドServletFilter追加する必要がありますHandlerInterceptor

int seconds = ...; // timeout
request.getSession(true).setMaxInactiveInterval(seconds);

そのセッションには、コンテナーがセッションを無効にする前に、指定されたタイムアウトがあります。

ユーザーが何らかの方法で別のページに移動した場合、セッションのタイムアウトは、変更しない限り、上記で設定した値のままになることに注意してください。

于 2013-10-01T18:37:15.547 に答える