Java Spring安全性以编程方式登录(AuthenticationSuccessHandler)

Java Spring安全性以编程方式登录(AuthenticationSuccessHandler),java,spring,spring-security,Java,Spring,Spring Security,我使用的是SpringSecurity3.2.6,在测试期间,我以编程方式使用 public User login(User user) { logOut(); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( user, user.getPassword(), user.getAuthorities());

我使用的是SpringSecurity3.2.6,在测试期间,我以编程方式使用

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

这样做时,我注意到AuthenticationSuccessHandler不会执行此操作。有没有办法做到这一点?

您正在尝试覆盖AuthenticationManager。如果要覆盖AuthentionSeccessHandler,则需要

覆盖AuthenticationFilter

身份验证筛选器检查传入请求是否需要身份验证,如果需要,则调用身份验证管理器对请求进行身份验证。 身份验证管理器对请求进行身份验证,并将其添加到SecurityContextHolder,然后返回身份验证令牌,该令牌是默认的UsernamePasswordAuthenticationToken


过滤器然后检查是否定义了SuccessHandler。如果是,则将请求重定向到AuthenticationSuccessHandler。

好吧,它不是真正的覆盖,我从您的解释中了解到了更多的步骤。。。有一种方法可以使用AuthenticationFilter吗?