2
我有一個使用Spring Security進行身份驗證的Spring項目。春季安全自定義哈希算法
Spring Security的代碼片段:
<authentication-manager>
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="
SELECT users.LOGIN_NAME AS username,
users.PASSWD_HASH AS password , users.status as enabled
FROM RV_USER users
WHERE users.LOGIN_NAME=?"
authorities-by-username-query="
select users.LOGIN_NAME as username, authorities.ROLE_DESC as authority
from RV_ROLE authorities, RV_USER users
where authorities.ROLE_ID=users.ROLE_ID
and users.LOGIN_NAME=?"
/>
</authentication-provider>
</authentication-manager>
我想用一個自定義的哈希算法,而不是MD5或別的東西。
感謝。但是當我使用j_spring_security_check進行身份驗證時,它正在碰到isPasswordValid()方法。我應該在哪裏編碼密碼。請詳細分享代碼。 –
另外我如何獲取用戶名,以便我可以根據用戶名驗證密碼? –
如果您仍在使用isPasswordValid方法,則使用舊的PasswordEncoder接口,而不是上面提供的代碼。密碼編碼僅用於密碼編碼。它不需要知道如何根據用戶名驗證密碼。 Spring Security將採用用戶提供的用戶名和密碼,它將使用UserDetailsService查找當前用戶,然後它將傳入rawPassword(即用戶輸入的那個)和從UserDetailsService返回到匹配方法的密碼。 –