我正在使用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 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有一个(非理想的)解决方案,如果有人能描述一个更好的解决方案,请告诉我,否则我会使用这个。
答案 0 :(得分:0)
好的,我在https://community.jboss.org/thread/191214找到了同样的问题,并使用了线程末尾提供的解决方案,该解决方案似乎运行良好。