我使用的是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
。有没有办法实现这个目标?
答案 0 :(得分:0)
您正在尝试覆盖AuthenticationManager。如果要覆盖AuthentitionSeccessHandler,则需要
覆盖AuthenticationFilter。
身份验证过滤器检查传入请求是否需要身份验证,如果是,则调用身份验证管理器来验证请求。 Authentication Manager对请求进行身份验证并将其添加到SecurityContextHolder并返回Authntication令牌,该令牌是dy默认的UsernamePasswordAuthenticationToken。
过滤器然后检查是否定义了SuccessHandler。如果是,则将请求重定向到AuthenticationSuccessHandler。