Как получить все роли из RoleHierarchyImpl - PullRequest
2 голосов
/ 16 октября 2011

У меня настроена и работает иерархия ролей:

<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, но я не знаю, что дать в качестве параметра. Заранее спасибо.

1 Ответ

4 голосов
/ 28 октября 2011

Как я понимаю, вы хотите получить все достижимые предоставленные полномочия от данного предоставленного разрешения.Если это так, ниже приведено обходное решение:

  • Сначала получите экземпляр RoleHierarchyImpl из Spring ApplicationContext

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

или создайте новый экземпляр и загрузите иерархию каккак показано ниже;

     RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
     roleHierarchy.setHierarchy(properties.getProperty("security.roleHierarchy"));
  • Теперь вы можете использовать roleHierarchy.getReachableGrantedAuthorities и AuthorityUtils, чтобы получить все доступные полномочия:

     Collection<GrantedAuthority> ga = roleHierarchy.getReachableGrantedAuthorities(AuthorityUtils.createAuthorityList(new String[]{"ROLE_ADMIN"}));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...