githubEdit

Secure Passwords With Rails And Bcrypt

If you are using bcryptarrow-up-right (at least version 3.1.7), then you can easily add secure password functionality to an ActiveRecordarrow-up-right model. First, ensure that the table backing the model has a password_digest column. Then add has_secure_passwordarrow-up-right 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

Last updated