2015-04-21 5 views
0

Я использую пружинную безопасность 3.2.6 и во время тестирования программно войти в моих пользователи сВойти Spring Security программно (AuthenticationSuccessHandler)

public User login(User user) { 
    logOut(); 
    UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
      user, user.getPassword(), user.getAuthorities()); 
    SecurityContextHolder.getContext().setAuthentication(
      authenticationToken); 
    return user; 
} 

делает это таким образом, я заметил, что не собираюсь через AuthenticationSuccessHandler. Есть ли способ достичь этого?

ответ

0

Что вы делаете, это попытка переопределить AuthenticationManager. Если вы хотите переопределить AuthentitionSeccessHandler, тогда вам нужно будет

Переопределить аутентификационный фильтр.

Фильтр проверки подлинности проверяет, нуждается ли входящий запрос на аутентификацию, если «Да» затем вызывает Authentication Manager для аутентификации запроса. Authentication Manager аутентифицирует запрос и добавляет его в SecurityContextHolder и возвращает токен Authrntication, который по умолчанию является именем пользователя по умолчанию UserPasswordAuthenticationToken.

Фильтр затем проверяет, установлен ли список SuccessHandler. Если да, то перенаправляет запрос в AuthenticationSuccessHandler.

+0

ну, на самом деле это не переопределение, больше шаг (я понял из вашего объяснения) ... есть способ использовать AuthenticationFilter? – xedo

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