xml条件重定向



我正在使用SEAM 2.2.2 (JBoss AS6),试图实现以下导航逻辑:

我有3个用户类型:user, client, admin

对于每种类型,我使用以下页面规则…

<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 page

我想我需要以某种方式获得所请求的页面作为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有一个(不理想的)解决方案,如果有人能描述一个更好的,请让我知道,否则我将使用这个

Ok,我在这里发现了同样的问题https://community.jboss.org/thread/191214,并使用了在线程结束时提供的解决方案,似乎工作得很好。

最新更新