4

私のアプリケーションには、終了ボタンがあり、クリックすると、現在のユーザーのセッションが次のコードによって無効になります..

FacesContext.getCurrentInstance().getExternalContext().invalidateSession();

そして、ユーザーを別のページにリダイレクトします。

しかし、ユーザーが戻るボタンをクリックすると、最後に閲覧したページではなく、アプリケーションの開始ページに移動したいと考えています。ページ キャッシュ関連のヘッダーを「なし」に設定するアプリケーション フェーズ リスナーがありますが、そのユーザー セッションが無効になったことを検出するだけです。しかし、ユーザーが戻るボタンをクリックするたびに、ユーザーの新しいセッションが作成されていると思います。それを防ぐ方法はありますか?

4

1 に答える 1

12

JSF 2でセッションが無効になったことを検出する方法は?

ユーザーが無効なセッション IDを要求したかどうかを確認してください。

HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
    // Session has been invalidated during the previous request.
}

ユーザーの新しいセッションを作成しています。それを防ぐ方法はありますか?

アプリケーションコードでセッションを作成させないでください。セッションは、アプリケーションがセッションに何かを格納する必要がある場合に暗黙的に作成されます。たとえば、ビューまたはセッション スコープ Bean、または のビュー ステート<h:form>などです。


ページキャッシュ関連のヘッダーを「なし」に設定するアプリケーションフェーズリスナーがあります

これには、サーブレット フィルターが適しています。JSF Web アプリケーションの戻るボタンを避けるも参照してください。

于 2012-06-26T12:02:45.437 に答える