2012-10-06 37 views
2
的子類

我試圖使AuthenticationException異常的子類,如下所示:不能使用的AuthenticationException

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

,並在我的UserDetailsService類的loadUserByUsername我做如下檢查:

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()); 

它打印出的異常類是AuthenticationExceptionRegistrationNotCompleteException

我想驗證異常類是RegistrationNotCompleteException

請告知如何做到這一點。

+0

好問題解決。但是,我可以問你爲什麼要擴展身份驗證例外嗎?它似乎並沒有添加任何功能。 – AlexR

+0

@AlexR,我想做一個新的異常RegistrationNotCompleteException作爲一個標記,我可以檢查它在AuthenticationFailureHandler –

+0

@AlexR,任何建議來完成我想要的? –

回答

0

通過改變檢查exception.getCause().getClass()代替exception.getClass()

+0

那麼接受這個答案。 – tcb

+0

@tcb,忘記接受它,因爲你應該接受答案的第二天。 –