最多想知道登录失败的原因是什么!
这就是代码:
@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();
}
答案 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。