2

我想为用户提供一种使用令牌登录的替代方式。我已经在 PreAuthenticationFilter 类中处理了对用户的身份验证,但是我需要触发我的

AuthenticationSuccessHandler.onAuthenticationSuccess()

它做了一个

super.onAuthenticationSuccess()

触发它的基类中的方法

SavedRequestAwareAuthenticationSuccessHandler.

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

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

不幸的是,这不起作用。所以我需要知道如何AuthenticationSuccessHandler从预认证过滤器中触发。

4

2 回答 2

1

您可能会受到RememberMeAuthenthicationFilterspring-security 中的工作原理的启发。它引用了, 并手动AuthenticationSuccessHandler调用。onAuthenticationSuccess

于 2012-07-27T21:31:26.320 回答
0

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

于 2013-08-08T11:20:49.663 回答