2013-03-08 35 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

回答