2013-07-03 3 views
2

Я использую весеннюю безопасность 3.1.3. В приложении, которое я создаю, когда пользователь пытается войти в систему, помимо проверки их имени пользователя и пароля, мне нужно сделать дополнительные проверки для проверки их учетной записи (в частности, что их учетная запись не имеет установленного флага, который указывает, что они запрещено входить в систему). Я смущен, чтобы лучше всего это сделать.Весна безопасности пользовательских требований проверки подлинности

Должен ли я создавать компонент фильтра проверки подлинности и включать его в элемент формы входа в мой весенний xml? Или я должен что-то делать с фильтром успешности проверки подлинности, который выполняется только тогда, когда пользователь выполняет требование имени пользователя/пароля? Или что-то другое?

ответ

4

Определите пользовательскую информацию об услугах пользователя, реализующую UserDetailsService. Заполните экземпляр класса User с учетными данными пользователя, вы можете использовать поле enabled или accountNonLocked для запрещенных пользователей.

@Service("userDetailsService") 
public class MyUserDetailsService implements UserDetailsService { 

    @Transactional(readOnly = true) 
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 

     // load user data from repository 
     String password = ... 
     boolean enabled = ... 
     // ... 
     UserDetails user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); 
     return user;  
    } 
} 

Затем подключить вашу службу в менеджер аутентификации в spring-security.xml:

<security:authentication-manager> 
    <security:authentication-provider user-service-ref="userDetailsService"> 
    ... 
<security:authentication-manager> 
Смежные вопросы