2011-02-04 204 views
3

我正在使用彈簧安全。我正在使用aspectj來記錄錯誤的用戶名或密碼。通過檢查loadUserByUsername來檢測異常,我能夠攔截錯誤的用戶名。我如何攔截錯誤的密碼。彈簧安全攔截錯誤密碼

看起來像Spring獲取用戶對象並根據用戶密碼檢查輸入的密碼。我怎麼可以攔截這個是任何異常提前

回答

2

我對方面沒有太多的想法,所以這可能沒有幫助。

首先,您需要問自己,您是否真的需要區分錯誤的用戶名和密碼錯誤 - 特別是如果將這些信息返回給用戶。

默認情況下,spring-security不鼓勵這樣做,這就是爲什麼默認情況下它會返回BadCredentialsException

彈簧安全3.0.x提供publicauthenticate()方法(在AbstractUserDetailsAuthenticationProvider類),它首先檢索在protectedretrieveUser()方法中的用戶,然後做在protectedadditionalAuthenticationChecks()方法密碼驗證。

通過將屬性hideUserNotFoundExceptions設置爲false(它是true默認情況下),authenticate()方法可以在錯誤的密碼的情況下,被檢查UserNotFoundException(在錯誤的用戶的情況下)和BadCredentialsException

0

感謝您通常使用的ExceptionTranslationFilterFilterSecurityInterceptor來處理所有身份驗證失敗。您可能需要查看The Security Filter Chain頁面,並向您提供一些說明,如果這不能滿足您的需求。

+0

你能幫我一些代碼示例。爲了編織一個方面,我需要提供一些需要檢查的方法。作爲Spring安全新手,不確定,擴展哪個類以及檢查密碼是否不正確的方法。 – user373201 2011-02-04 17:03:27