2015-10-15 3 views
0

Я новичок в обеспечении безопасности весны и изучил концепции AuthenticationInterceptor, AuthenticationManager, UserLoginService. Я знаю, как реализовать пользовательский сервис для проверки действительного пользователя в системе. Проблема состоит в том, что у нас есть два типа пользователей: 1) Специалисты 2) Пользователи и их учетные данные хранятся в двух разных таблицах. Реализация UserDetailsService должна проверять обе таблицы для аутентификации и получения информации о пользователе. Существует ли возможность использовать несколько провайдеров проверки подлинности и использовать их в зависимости от типа пользователя? или Должен ли я использовать тот же поставщик проверки подлинности, чтобы запрашивать обе таблицы, чтобы узнать правку пользователя? Каков наилучший способ справиться с этими сценариями, когда пользователь должен искать в двух таблицах?Освещенность весны безопасности

+0

Вы хотите иметь один фактор аутентификации, такие как имя пользователя, и имея имя вы хотите найти это в разных таблицах? Например, пользователь X попытался войти в систему, и вы проверили X в таблице пользователя, а также в другой таблице? –

+0

Да, абсолютно верно. – Keerthivasan

ответ

0

Я думаю, что вы можете сделать что-н, как:

@Autowired 
private UsersDAO usersDAO; 

@Autowired 
private OtherDAO otherDAO; 

@Override 
@Transactional 
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException { 

    Users user = usersDAO.find(username); 
    Other oth = otherDAO.find(username); 

    // your queries 

    if(check if your desire is correct based on user){ 
     List<GrantedAuthority> authorities = buildUserAuthority(user.getUserRole()); 
     return buildUserForAuthentication(user, authorities); 
    } else { 
     //... 
    } 
} 
+0

Да, мы можем сделать это так. Я ищу другие лучшие возможности. В любом случае, спасибо! – Keerthivasan

+0

Возможно, вы захотите изменить свой менеджер аутентификации. Возможно, этот пост может удовлетворить ваши требования. http://krams915.blogspot.com.tr/2010/12/spring-security-mvc-integration-using_26.html –