2014-11-30 2 views
0

Я использовал пользовательский AUTH как этотКак получить аутентификации внутри UserDetailsService подкласса

@Override 
public Authentication authenticate(Authentication authentication) throws AuthenticationException{ 
    LoggedInUser user = new LoggedInUser(); 
    ... 
    ... 
    return new UsernamePasswordAuthenticationToken(user, authentication.getCredentials()); 
} 

здесь я заходил какое-то значение для authentication объекта

Теперь я использую password-encoder поэтому мой заказ аутентификация

@Service 
public class CustomUserDetailsService implements UserDetailsService { 

    @Autowired 
    private UserService userService; 

    static final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); 

    @Override 
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { 
} 

Здесь внутри loadUserByUsername как я могу установить что-либо в Authentication объект?

ответ

0

UserDetailsService Реализации должны нести ответственность за получение сведений о пользователе на основе предоставленного ID, а не для управления Authentication. Чтобы обработать конкретный объект Authentication, выполните пользовательский AuthenticationProvider или продолжите существующий (например, DaoAuthenticationProvider), который будет делегировать ваш UserDetailsService для извлечения пользователя. Затем такой пользователь может быть назначен объекту аутентификации и возвращен с помощью метода AuthenticationProvider.authenticate(...).

Посмотрите на весеннюю безопасность DaoAuthenticationProvider, которая реализована таким образом, используя принципы single responsibility и separation of concerns.

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