在我的应用程序中,我有三种方式来登录用户表单登录、自动登录和记住我的 cookie。
我必须在用户成功认证后拦截呼叫,因为我正在使用AuthenticationSuccessHandler拦截呼叫。
我正在使用 spring security 对用户进行身份验证。对于基于表单的登录,我在 spring-security.xml 中配置了以下代码
form-login login-page="/login/formlogin" default-target-url="/login/user_login"
authentication-failure-url="/login/loginfailed"
authentication-success-handler-ref="authenticationSuccessHandlerImpl"/>
和
AuthenticationSuccessHandler.onAuthenticationSuccess();
在身份验证成功完成后立即调用,但对于自动登录,永远不会调用此方法。
对于自动登录用户将收到一个 URL,单击 URL 将对用户进行身份验证,我正在以编程方式进行。在 URL 中,我输入了加密的用户名(无密码)。当用户单击 URL(自动登录)时,我正在使用以下代码行对用户进行身份验证
Authentication authentication = new UsernamePasswordAuthenticationToken(userName, null, userDetails.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
但,
AuthenticationSuccessHandler.onAuthenticationSuccess()
在这种情况下永远不会调用。
有没有其他方法可以拦截成功身份验证的调用。