2013-03-08 54 views
0

我使用SEAM 2.2.2(JBoss的AS6),试图执行以下导航逻辑:SEAM pages.xml中有条件重定向

我有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,我重定向到/管理员登录页面

我想我需要以某种方式获得所需的页面在pages.xml参数,而是通过文档说完看着我不能看到任何

类似下面(作为一个例子)...

<exception class="org.jboss.seam.security.NotLoggedInException" log="false"> 
    <rule if="#{requestedPage}='/admin/*'"> 
     <redirect view-id="/admin-login"/> 
    </rule> 
</exception> 

UPDATE:

我也曾尝试以下,

<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

我缺少的东西?为什么不能将相应的逻辑添加到相关的page.xml中?所以/admin/somePage.page.xml必须正确重定向到/admin-login.xhtml如果用户没有登录。 – gebuh 2013-03-09 00:57:46

+0

嗨@gebuh,是的,但我没有为每一个页面一个单独的pages.xml中,再加上登录要求的属性将覆盖它,我发现了同样的问题在这里:https://community.jboss.org/thread/191214 – DaveB 2013-03-09 11:48:47

回答