Secure Passwords With Rails And Bcrypt
If you are using bcrypt
(at
least version 3.1.7), then you can easily add secure password functionality
to an
ActiveRecord
model. First, ensure that the table backing the model has a
password_digest
column. Then add
has_secure_password
to your model.
class User < ActiveRecord::Base
has_secure_password
# other logic ...
end
You can now instantiate a User
instance with any required fields as well
as password
and password_confirmation
. As long as password
and
password_confirmation
match then an encrypted password_digest
will be
created and stored. You can later check a given password for the user using
the authenticate
method.
user = User.find_by(email: user_params[:email])
if user.authenticate(user_params[:password])
puts 'That is the correct password!'
else
puts 'That password did not match!'
end
Tweet