如何在Spring Security 4中记录登录和注销?

时间:2017-02-06 14:18:26

标签: spring spring-security

最多想知道登录失败的原因是什么!

这就是代码:

@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();  
}

1 个答案:

答案 0 :(得分:3)

默认情况下,你的spring应用程序有一个名为ApplicationEventPublisher的东西,Spring安全性通过这个事件机制发送AbstractAuthenticationEvent,所以你所要做的就是听。这很简单,你只需要一个实现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。