0

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。

4

1 に答える 1

0

わかりました。ここhttps://community.jboss.org/thread/191214で同じ質問を見つけ、スレッドの最後に提供されているソリューションを使用しました。これは非常にうまく機能しているようです。

于 2013-03-10T12:57:07.447 に答える