2

非アクティブ状態が 15 分間続いた後にセッションを破棄するように Tomcat を設定しました。このようなもの

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

ユーザーが制限されたページ (ユーザーのログインが必要なページ) にアクセスするたびに、セッションをチェックして、ログイン プロセスが完了したかどうかを確認します。許可されている場合はアクセスが許可され、許可されていない場合、ユーザーはログイン ページにリダイレクトされ、そこで有効な ID とパスワードの入力を求められます。セッションがタイムアウトした場合、ユーザーは再度ログインする必要があります。これで問題ありませんが、セッションがタイムアウトしたため、再度ログインする必要があることをユーザーに知らせたいと思います。

どうすればこれを行うことができますか?私は HttpSessionListener インターフェイスを見つけて、それが役立つかもしれないと考えましたが、セッションが無効になる直前に sessionDestroyed メソッドが呼び出されるため、そこにパラメーターを設定することは期待どおりではありません。

4

3 に答える 3

2

ユーザーをログイン フォームにリダイレクトするときは、セッションの有効期限が切れたことを示す要求パラメーター、url パラメーター、または Cookie を設定します (Cookie を使用している場合は、ログイン フォームを表示したら Cookie を消去します)。次に、フォームを表示するときに、セッション期限切れインジケータを確認し、適切なメッセージを表示します。

于 2010-01-04T21:22:21.760 に答える
2

セッションが期限切れまたはタイムアウトしたかどうかは、次の方法で確認できます。

if (request.getRequestedSessionId() != null
        && !request.isRequestedSessionIdValid()) {
    // Session is expired
}

getRequestedSessionId新規と既存の (有効/期限切れの) セッションを区別するために使用し、isRequestedSessionIdValid有効なセッションと新規/期限切れのセッションを区別するために使用します。

このコードをFilterに入れることができます。

于 2010-06-29T12:06:25.820 に答える