我使用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具有(不理想)的解决方案,如果任何人都可以描述一个更好的,请让我知道,否则我会用这一个。
我缺少的东西?为什么不能将相应的逻辑添加到相关的page.xml中?所以/admin/somePage.page.xml必须正确重定向到/admin-login.xhtml如果用户没有登录。 – gebuh 2013-03-09 00:57:46
嗨@gebuh,是的,但我没有为每一个页面一个单独的pages.xml中,再加上登录要求的属性将覆盖它,我发现了同样的问题在这里:https://community.jboss.org/thread/191214 – DaveB 2013-03-09 11:48:47