微信平臺制作網(wǎng)站開發(fā)站長之家怎么用
一、Spring Security中的核心類
1.1、自動配置類
UserDetailsServiceAutoConfiguration
1.2、密碼加密器
1.2.1、概述
????????Spring Security 提供了多種密碼加密方案,官方推薦使用 BCryptPasswordEncoder,BCryptPasswordEncoder 使用 BCrypt 強(qiáng)哈希函數(shù),開發(fā)者在使用時可以選擇提供 strength 和 SecureRandom 實(shí)例。strength 越大,密鑰的迭代次數(shù)越多,密鑰迭代次數(shù)為 2^strength。strength 取值在 4~31 之間,默認(rèn)為 10。不同于 Shiro 中需要自己處理密碼加鹽,在 Spring Security 中,BCryptPasswordEncoder 就自帶了鹽,處理起來非常方便。而 BCryptPasswordEncoder 就是 PasswordEncoder 接口的實(shí)現(xiàn)類。
1.2.2、PasswordEncoder
public interface PasswordEncoder {/** encode 方法用來對明文密碼進(jìn)行加密,返回加密之后的密文*/String encode(CharSequence var1);/** matches方法是一個密碼校對方法,在用戶登錄的時候,將用戶傳來的明文密碼和數(shù)據(jù)庫中保存的密文密碼作為參數(shù),* 傳入到這個方法中去,根據(jù)返回的 Boolean 值判斷用戶密碼是否輸入正確*/ boolean matches(CharSequence var1, String var2);/** upgradeEncoding 是否還要進(jìn)行再次加密,這個一般來說就不用了*/ default boolean upgradeEncoding(String encodedPassword) {return false;}
}
1.3、UserDetailService
1.3.1、概述
????????Spring Security支持多種數(shù)據(jù)源,例如內(nèi)存、數(shù)據(jù)庫、LDAP等,這些不同來源的數(shù)據(jù)被共同封裝成了UserDetailService接口,換句話說任何實(shí)現(xiàn)了UserDetailService接口的對象都可以作為認(rèn)證數(shù)據(jù)源,因?yàn)槲覀冞€可以通過重寫WebSecurityConfigurerAdapter 中的 userDetailsService 方法來提供一個 UserDetailService 實(shí)例進(jìn)而配置多個用戶。