Задать вопрос
@WEB_champion

Как проверить пароль из БД с новым паролем на совпадение в Rails?

Есть пароль из формы: params[:user][:password]
Хочу проверить на совпадение пароля из БД. Пароль в БД хранится в хэшированном виде (через bcrypt), и соответственно проверить пароль таким способом не получается:
@user = User.where(password: params[:user][:password]).first


Как можно решить проблему???
  • Вопрос задан
  • 2276 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@WEB_champion Автор вопроса
Решил проблему с простым использованием:
password = params[:user][:password]
User.find_by(id:user_id).try(:authenticate, password)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Почитайте это: https://github.com/codahale/bcrypt-ruby, там описано как пользоваться bcrypt в Rails
Ответ написан
Комментировать
@maxloyko
как то так
def self.authenticate(email, password)
    user = find_by_email(email)
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
      user
    else
      nil
    end
  end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы