私のアプリケーションでは、ユーザー フォーム ログイン、自動ログイン、および Cookie を記憶する 3 つの方法があります。
User の認証が成功した後に呼び出しを傍受する必要があります。そのため、 AuthenticationSuccessHandlerを使用して呼び出しを傍受しています。
私は春のセキュリティを使用してユーザーを認証しています。フォームベースのログインの場合、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()
この場合、呼び出されることはありません。
認証が成功したときに呼び出しを傍受する他の方法はありますか。