使用Spring,我如何手动触发AuthenticationSuccessHandler

时间:2012-07-27 20:11:54

标签: java spring spring-mvc

我想为用户提供使用令牌登录的替代方法。我已经在PreAuthenticationFilter类中处理用户身份验证,但我需要解雇我的

AuthenticationSuccessHandler.onAuthenticationSuccess()

做了

super.onAuthenticationSuccess()

在它的基类

中触发方法

SavedRequestAwareAuthenticationSuccessHandler.

如何从我的预身份验证过滤器中触发AuthenticationSuccessHandler?我尝试设置SecurityContextHolder的身份验证,认为它会自动触发AuthenticationSuccessHandler,但事实并非如此。这就是我试图这样做的方式:

Authentication authentication = new UsernamePasswordAuthenticationToken(Username, Password);
SecurityContextHolder.getContext().setAuthentication(authentication);

不幸的是,这不起作用。所以我需要知道如何从预身份验证过滤器中激活AuthenticationSuccessHandler

2 个答案:

答案 0 :(得分:0)

你可能会对RememberMeAuthenthicationFilter如何在spring-security中起作用感到鼓舞。它引用了AuthenticationSuccessHandler,并手动调用onAuthenticationSuccess

答案 1 :(得分:0)

您必须扩展PreAuthenticationFilter并覆盖方法successfulAuthentication。在那里,您可以触发注入的成功处理程序。