15.3.7. ログインのリダイレクト
認証されていないユーザーが特定のビューまたはワイルドカードで指定されたビュー ID へのアクセスを試行する際に、 Seam ではユーザーを以下のようにログイン画面にリダイレクトすることができます。
<pages login-view-id="/login.xhtml">
<page view-id="/members/*" login-required="true"/>
...
</pages>
注記
これは上記の例外ハンドラと比べて改善されていますが、併用するとよいでしょう。
ユーザーがログイン後、 ログインを必要とした操作にユーザーを自動的にリダイレクトする場合を考えてみます。 次のイベントリスナーを
components.xml に追加すると、 ログインせずに行われた制限ビューへのアクセス試行は記憶されます。 ログインに成功すると、ユーザーは当初の要求時に存在したページパラメータを持つ当該ビューにリダイレクトされます。
<event type="org.jboss.seam.security.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
</event>
<event type="org.jboss.seam.security.postAuthenticate">
<action execute="#{redirect.returnToCapturedView}"/>
</event>
注記
ログインのリダイレクトは対話スコープのメカニズムとして実装されるため、
authenticate() メソッドの中で対話を終了させないでください。