В этом руководстве показано, как использовать Bcrypt с Rails, но оно значительно отличается strong> в реализации из этой документации по Rails на Bcrypt.
Версия руководства
Установка пароля
def password=(password)
self.password_digest = BCrypt::Password.create(password)
end
Подтвердить пароль
def is_password?(password)
BCrypt::Password.new(self.password_digest) == password
end
Но документация делает то же самое, используя встроенные методы.
Версия документации
Установка пароля
Установив user.password
или задав оба значения user.password
и user.password_confirmation
, затем вызов user.save
вызовет некоторые обратные вызовы из Bcrypt, которые примут значения пароля, сгенерируют дайджест и сохранят его в базе данных.
user.password = 'mUc3m00RsqyRe'
user.password_confirmation = 'mUc3m00RsqyRe'
user.save
Подтвердить пароль
Метод user.authenticate(password)
вернет false или переменную экземпляра user
в зависимости от того, соответствует ли аргумент пароля user.password_digest
.
user.authenticate('notright')
user.authenticate('mUc3m00RsqyRe')
Вопросы
Я всегда использовал версию с документацией, так как увидел ее первой, но придерживается ли руководство какой-то лучшей практики?
Почему руководство переписывает колесо? Это кажется очень не-Railsy.
Это просто разница в версиях Bcrypt или Rails?