Я пытаюсь понять, как работает has_secure_password
. На веб-сайте есть следующие примеры того, как его использовать. Меня смущает метод password
класса User
. Похоже, что код @password ||= Password.new(password_hash)
берет зашифрованный хеш и возвращает незашифрованный пароль. Не должно быть возможности восстановить пароль только из зашифрованного хэша. Что я неправильно понимаю в Password.new
Модель пользователя
require 'bcrypt'
class User < ActiveRecord::Base
# users.password_hash in the database is a :string
include BCrypt
def password
@password ||= Password.new(password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
end
Создание учетной записи
def create
@user = User.new(params[:user])
@user.password = params[:password]
@user.save!
end
Аутентификация пользователя
def login
@user = User.find_by_email(params[:email])
if @user.password == params[:password]
give_token
else
redirect_to home_url
end
end