2017-02-06 7 views
0

В большинстве случаев, чтобы узнать, в чем причина логина, не удалось!Как регистрировать вход и выход в Spring Security 4?

Вот код:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .authorizeRequests() 
      .antMatchers("/assets/**", 
         "/user/register/**", 
         "/login/**", 
         "/page-register.html", 
         "/page-login.html").permitAll() 
      .anyRequest().authenticated() 
      .and() 
     .formLogin() 
      .successForwardUrl("/index.html") 
      .loginProcessingUrl("/login") 
      .loginPage("/page-login.html") 
      .permitAll() 
      .and() 
     .logout() 
      .permitAll() 
      .and() 
     .csrf().disable(); 
} 

ответ

3

По умолчанию ваша весна Приложение имеет нечто, называемое ApplicationEventPublisher и Spring безопасности посылает AbstractAuthenticationEvent через это событие mechnism, поэтому все, что вам нужно сделать, это слушать. Это довольно просто, вам просто нужен компонент, который реализует ApplicationListener, как это:

@Component 
public class SecurityEventListener implements ApplicationListener<AbstractAuthenticationEvent> { 

    @Override 
    public void onApplicationEvent(AbstractAuthenticationEvent event) { 
     System.out.println(event); 
    } 
} 

Если вы используете Spring 4.2 или более поздней версии, вам не нужно реализовать интерфейс, просто аннотирования метод с @EventListener. Вы можете узнать больше о слушателях here

При неудачном входе в систему событие продлевает AbstractAuthenticationFailureEvent и содержит исключение, которое было выбрано. Вы можете проверить свойство источника событий, чтобы узнать, что пользователь вводил в форме входа в систему, и с каким IP-адресом он подключился.