我最近實作了 DelegatingPasswordEncoder,它根據存盤的密碼的前綴委托給 PassworEncoders 實體。問題是,對于先前存盤的沒有前綴的密碼,它會引發錯誤'沒有為 id“null”映射 PasswordEncoder'。我被告知要定義一個默認 PasswordEncoder 來驗證沒有前綴 PasswordEncoder 的密碼前綴必須在 DelegatingPasswordEncoder () 建構式的第一個引數中指定,正如我在下面的代碼示例中指定的那樣,因為存盤的密碼被編碼為純文本。
@Bean
public PasswordEncoder passwordEncoder(){
Map<String,PasswordEncoder> encoders= new HashMap<>();
encoders.put("", NoOpPasswordEncoder.getInstance());
encoders.put("noop", NoOpPasswordEncoder.getInstance());
encoders.put("bcrypt",new BCryptPasswordEncoder());
encoders.put("scrypt",new SCryptPasswordEncoder());
return new DelegatingPasswordEncoder("noop",encoders);
}
uj5u.com熱心網友回復:
對于沒有 id 的密碼,您可以使用 DelegatingPasswordEncoder 方法設定默認密碼編碼器
setDefaultPasswordEncoderForMatches(PasswordEncoder defaultPasswordEncoderForMatches)
如果沒有設定,springUnmappedIdPasswordEncoder默認使用,這會拋出IllegalArgumentException
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466495.html
