2013-05-09 36 views
2

我使用的是tile3,spring security和struts2。我有不同數量的用戶,每個用戶都有特定的角色,並且每個角色都應該可以訪問特定的菜單,我有以下的tile.xml文件,但我不知道如何改變它以解決問題。如何根據用戶使用規則顯示不同的菜單Tile3

請讓我知道你是否需要我提供我的代碼的任何其他部分。

<tiles-definitions> 
    <definition name="baseLayout" template="/baseLayout.jsp"> 
     <put-attribute name="title" value=""/> 
     <put-attribute name="header" value="/header.jsp"/> 
     <put-attribute name="menu" value=""/> 
     <put-attribute name="body" value=""/> 
     <put-attribute name="footer" value="/footer.jsp"/> 
     <put-attribute name="register" value="/register.jsp"/> 
    </definition> 

    <definition name="register1" extends="baseLayout"> 
     <put-attribute name="menu" value="/menuAdmin.jsp"/> 
     <put-attribute name="body" value="/body.jsp"/> 
    </definition> 
    <definition name="register2" extends="baseLayout"> 
     <put-attribute name="menu" value="/menuUser.jsp"/> 
     <put-attribute name="body" value="/body.jsp"/>  
    </definition> 
     ..... 

由於我的應用程序有許多不同的頁面,我必須爲每個用戶角色的每個請求創建一個單獨的定義。例如,應該只有一個名爲register的定義,菜單屬性應根據請求者的角色動態更改,或者使其更簡單。

我使用下面的定義可訪問的部分爲每個角色

<http auto-config="true" access-denied-page="/notFound.jsp" use-expressions="true"> 
    <intercept-url pattern="/Profile/view*" access="hasRole('ROLE_ADMIN')" /> 
    <intercept-url pattern="/Search/view*" access="hasRole('ROLE_ADMIN')" /> 
    <form-login login-page="/index" 
       authentication-failure-url="/index?error=1" 
       default-target-url="/default"/> 
    <logout logout-success-url="/index.jsp"/> 
</http> 

我可以使用下面的代碼,找到登錄用戶的角色

@Action 
public class Default { 
    public String execute(){ 
     String role =  
     SecurityContextHolder.getContext().getAuthentication().getAuthorities().toString(); 
     System.out.println("User's role:"+role); 
     if(role.equalsIgnoreCase("[ROLE_ADMIN]")) 
      return "Admin"; 
     return ""; 


    } 

} 
+1

角色如何訪問?它是否可以從會話對象訪問?進一步考慮基於角色的安全性,通常用戶被分配多個角色。爲了簡化問題,我假設用戶被分配了一個角色。 – Quaternion 2013-05-09 05:12:54

+0

@Quaternion我已經更新了問題 – J888 2013-05-09 05:15:38

+0

我需要將你的代碼放在一個struts2動作中,以顯示特定用戶的角色。有了這個我們可以做一些有趣的事情 – Quaternion 2013-05-09 05:17:50

回答

相關問題