2011-10-16 37 views
2

讓所有的角色都配置角色和工作的層次結構:我如何從RoleHierarchyImpl

<beans:bean id="roleHierarchy" 
    class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl"> 
    <beans:property name="hierarchy"> 
     <beans:value> 
      ROLE_ADMIN > ROLE_PRIVILEGED 
      ROLE_PRIVILEGED > ROLE_USER 
      ROLE_USER > ROLE_ANONYMOUS 
     </beans:value> 
    </beans:property> 
</beans:bean> 

對於用戶角色設定我需要訪問我已經定義了哪些角色。我怎樣才能實現它?可能與roleHierarchy.getReachableGrantedAuthorities,但我不知道,什麼把它作爲參數。提前致謝。

回答

3

據我所知,你想從一個給定的授權機構獲得所有可以授權的機構。如果是這種情況,下面是解決辦法的解決方案:

  • 首先從春天ApplicationContext

    ApplicationContext context = new FileSystemXmlApplicationContext(
         "--path--"); 
    BeanFactory factory = context; 
    RoleHierarchyImpl roleHierarchy = (RoleHierarchyImpl) factory.getBean("roleHierarchy");` 
    

得到RoleHierarchyImpl實例之一或創建一個新的實例,並加載層次結構像下面一樣;

 RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl(); 
    roleHierarchy.setHierarchy(properties.getProperty("security.roleHierarchy")); 
  • 現在你可以使用roleHierarchy.getReachableGrantedAuthoritiesAuthorityUtils得到所有可達授予的權限:

    Collection<GrantedAuthority> ga = roleHierarchy.getReachableGrantedAuthorities(AuthorityUtils.createAuthorityList(new String[]{"ROLE_ADMIN"}));