SEAM 2.2.2(JBoss AS6)を使用して、次のナビゲーションロジックを実装しようとしています。
私は3つのユーザータイプを持っています:ユーザー、クライアント、管理者
タイプごとに、次のページルールを使用しています...
<page login-required="true" view-id="/admin/*">
<restrict>#{s:hasRole('admin')}</restrict>
<navigation from-action="#{identity.logout}">
<end-conversation/>
<redirect view-id="/admin-login"/>
</navigation>
</page>
ユーザーがログアウトしたときにログインページに転送する
と
<exception class="org.jboss.seam.security.NotLoggedInException" log="false">
<redirect view-id="/index.xhtml"/>
</exception>
<exception class="org.jboss.seam.security.AuthorizationException" log="false">
<end-conversation/>
<redirect view-id="/index.xhtml"/>
</exception>
ログインしていないユーザーをバウンスします。ただし、ユーザーをインデックスページにリダイレクトするのではなく、それぞれのログインページにリダイレクトします。たとえば、ログインせずに/admin/somePage.xhtmlにアクセスしようとすると、 /admin-loginページにリダイレクトされます
どういうわけか、pages.xmlのパラメーターとして要求されたページを取得する必要があると思いますが、ドキュメントを調べても何も表示されません
以下のようなもの(例として)...
<exception class="org.jboss.seam.security.NotLoggedInException" log="false">
<rule if="#{requestedPage}='/admin/*'">
<redirect view-id="/admin-login"/>
</rule>
</exception>
アップデート:
私も次のことを試しました、
<page login-required="true" view-id="/admin/*">
<restrict>#{s:hasRole('admin')}</restrict>
<rule if="#{!s:hasRole('admin')}">
<redirect view-id="/admin-login"/>
</rule>
<navigation from-action="#{identity.logout}">
<end-conversation/>
<redirect view-id="/admin-login"/>
</navigation>
</page>
ただし、org.jboss.seam.security.NotLoggedInExceptionはそれをオーバーライドし、index.xhtmlに転送します。
さらにグーグルした後、私はここで同じ問題を見つけました:https ://community.jboss.org/thread/191214これは(理想的ではない)解決策を持っています、誰かがより良いものを説明できるなら私に知らせてください、そうでなければ私はこれを使います1。