为什么即使超出了最大会话限制,Spring安全性也会触发AuthenticationSuccessEvent?

时间:2015-10-30 12:39:33

标签: java spring-security

如果身份验证不成功,我希望AuthenticationSuccessEvent不会被触发,但即使超出最大会话限制并且抛出SessionAuthenticationException,我也会收到此事件。

Java配置:

protected void configure(final HttpSecurity http) throws Exception {

    http
        .authorizeRequests()
            .anyRequest().permitAll()
            .and()
        .formLogin()
            .failureUrl("/login_failed.jsp")
            .and()
        .sessionManagement()
            .maximumSessions(1)
            .maxSessionsPreventsLogin(true);
}

日志记录:

<13:01:31,002> <WARN > <LoggerListener> - Authentication event AuthenticationSuccessEvent: dur; details: org.springframework.security.web.authentication.WebAuthenticationDetails@43458: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 1e7l0cf6q88j91wg2b8aw527na
<13:01:31,002> <DEBUG> <DefaultRedirectStrategy> - Redirecting to '/login_failed.jsp'

这种行为是否有任何原因?如何记录此案例?

1 个答案:

答案 0 :(得分:-1)

可能您正在实现自己的用户存储库和UserDetails实现。

主体是UserDetails实例,因此如果实现UserDetails,则应覆盖equals()和hashcode()。否则,该策略将无效。