2016-12-18 2 views
0

У меня проблема с использованием BCrypt. Я хочу безопасно хранить пароли пользователей, поэтому я использую BCrypt Spring для хранения зашифрованных паролей. Проблема, с которой я столкнулся сейчас, заключается в том, что BCrypt генерирует случайную соль и, конечно же, пароль не может быть расшифрован. Но как я могу обрабатывать логин?Как хранить и читать пароли с помощью Bcrypt

private PasswordEncoder encoder = new BCryptPasswordEncoder(); 

public String encryptPassword(String password) { 
     String encryptedValue = encoder.encode(password); 
     Assert.isTrue(encoder.matches(password, encryptedValue)); 
     return encryptedValue; 
} 

Что мне нужно сделать, чтобы убедиться, что пароли соответствия, когда пользователь вводит свои учетные данные?

String encryptedPassword = encryptionGenerator.encryptPassword(loginCredentials.getPassword()); 

А потом я пытаюсь читать из БД с Hibernate

FROM Login WHERE email = :email AND password = :password AND email_confirmed = 1" 

ответ

1

Чтобы убедиться в том, что пароли соответствия, когда пользователь вводит свои учетные данные нет необходимости кодировать пароль еще раз для проверки закодированный пароль которые вы получили из базы данных.

Класс BCryptPasswordEncoder будет соответствовать только значениям строк.

Я пробовал следовать за этим способом и работать на меня. Если ваша проблема заключается в аутентификации пользователя, то попробуйте следующий способ:

@Autowired 
UserRepository userRepository; 

public void validateUser(User user) { 

    // get User entity from database using your user repository 
    final User currentUser = userRepository.findByEmailId(user.getUserName()); 

    final BCryptPasswordEncoder pwEncoder = new BCryptPasswordEncoder(); 
    if (pwEncoder.matches(user.getPassword(), currentUser.getPassword())) { 
     // user password is correct 
    } 
    else{ 
     //user password incorrect 
    } 

} 



public interface UserRepository extends JpaRepository<User, Long>{ 

     @Query("FROM Login WHERE emailId = :emailId") 
     User findByEmailId(@param("emailId") String emailId); 
    } 

+0

Спасибо! Это решило мою проблему. Иногда я просто слепой – Kahuna

Смежные вопросы