Spring Security以编程方式登录(AuthenticationSuccessHandler)

时间:2015-04-21 06:39:17

标签: java spring spring-security

我使用的是spring-security 3.2.6,在测试过程中,我使用

以编程方式登录我的用户
public User login(User user) {
    logOut();
    UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
            user, user.getPassword(), user.getAuthorities());
    SecurityContextHolder.getContext().setAuthentication(
            authenticationToken);
    return user;
}

以这种方式这样做我注意到它并没有通过AuthenticationSuccessHandler。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

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

覆盖AuthenticationFilter。

身份验证过滤器检查传入请求是否需要身份验证,如果是,则调用身份验证管理器来验证请求。 Authentication Manager对请求进行身份验证并将其添加到SecurityContextHolder并返回Authntication令牌,该令牌是dy默认的UsernamePasswordAuthenticationToken。

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