2017-02-09 3 views
0

У меня есть проект Spring MVC, сконфигурированный с файлом security.xml, там у меня есть роли, с чем-то вроде этого:Как получить иерархию ролей из БД

<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> 

и он прекрасно работает, но теперь я хотите, чтобы эта иерархия исходила из таблицы в моей базе данных (я использую MYSQL)

Можете ли вы указать мне в правильном направлении? Я хочу, чтобы все безопасности в файле XML и просто быть в состоянии принести роли из базы данных, поскольку роли динамически создаются с графическим интерфейсом и хранится в БД

ответ

0

Вам нужно пользовательский UserDetailsService (см here an example)

Ваша информация о пользователях загружает роли из БД и хранит их как список GrantedAuthority для зарегистрированного пользователя.

например.

@SuppressWarnings("deprecation") 
@Override 
public UserDetails loadUserByUsername(String username) 
     throws UsernameNotFoundException, DataAccessException 
{ 
    System.out.println("Getting access details from employee dao !!"); 

    // Ideally it should be fetched from database and populated instance of 
    // #org.springframework.security.core.userdetails.User should be returned from this method 
    UserDetails user = new User(username, "password", true, true, true, true, new GrantedAuthority[]{ new GrantedAuthorityImpl("ROLE_USER") }); 
    return user; 
} 

В этом примере вам необходимо добавить свою логику для извлечения пользователя и добавления ролей.

Смежные вопросы