私はアプリケーションでSpringセキュリティを使用し、パスワード変更オプションのDBに保存されているパスワードでユーザー入力を検証したいと考えています。Spring Security - BcryptPasswordEncoder
パスワードはDBに次のように格納されます。ここ
user.setPassword(new BCryptPasswordEncoder().encode("<userPassword>"));
パスワードを入力したユーザは、上記のロジックを使用して符号化し、DBに格納されます。今私はパスワードを変更するためにユーザーからパスワードを取得しようとしています。ユーザーからパスワードを取得した後、上記のロジックを使用してエンコードし、DBと比較しようとします。エンコードに同じロジックを使用しても、エンコードされた値は異なるようです。
WebSecurityConfig
から私の設定:
@Autowired
public void configAuthentication(final AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
私が比較して何が間違っていることを確認していません。
:その後、代わりに
rawPassword
をコードしてString#equals
を使用して結果を比較すると、PasswordEncoder#matches
メソッドを使用できますか? 'String#equals'または' PasswordEncoder#matches'を使用していますか? –