2

次の例外サブクラスを作成しようとしてAuthenticationExceptionいます。

public class RegistrationNotCompleteException extends AuthenticationException {
    public RegistrationNotCompleteException(String msg) {
        super(msg);
    }
}

loadUserByUsername私のクラスでUserDetailsServiceは、次のチェックを行います。

if (!user.getHasRegistered()) {
    System.out.println("######## User: " + username
        + " has not completed the registration");
    throw new RegistrationNotCompleteException(
        "User has not completed registration");
}

AuthenticationFailureHandlerそのため、ユーザーは期待どおりにクラスに転送されます。

onAuthenticationFailureただし、次のようにメソッドで例外クラスを取得しようとすると:

public void onAuthenticationFailure(HttpServletRequest request,
    HttpServletResponse response, AuthenticationException exception)
    throws IOException, ServletException {

    UsernamePasswordAuthenticationToken token =
        (UsernamePasswordAuthenticationToken) exception.getAuthentication();
    String username = token.getName();
    String credentials = token.getCredentials().toString();
    System.out.println("Exception class: " + exception.getClass());

例外クラスがAuthenticationExceptionnotであることを出力しRegistrationNotCompleteExceptionます。

そして、例外クラスがRegistrationNotCompleteException.

その方法を教えてください。

4

1 に答える 1

0

exception.getCause().getClass()の代わりにチェックを変更することで解決exception.getClass()

于 2012-10-06T20:25:27.927 に答える