instance method
has_secure_password
Ruby on Rails 3.1.12
Since v3.1.12Signature
has_secure_password()
Adds methods to set and authenticate against a BCrypt password. This mechanism requires you to have a password_digest attribute.
Validations for presence of password, confirmation of password (using a “password_confirmation” attribute) are automatically added. You can add more validations by hand if need be.
You need to add bcrypt-ruby (~> 3.0.0) to Gemfile to use has_secure_password:
gem 'bcrypt-ruby', '~> 3.0.0'
Example using Active Record (which automatically includes ActiveModel::SecurePassword):
# Schema: User(name:string, password_digest:string) class User < ActiveRecord::Base has_secure_password end user = User.new(:name => "david", :password => "", :password_confirmation => "nomatch") user.save # => false, password required user.password = "mUc3m00RsqyRe" user.save # => false, confirmation doesn't match user.password_confirmation = "mUc3m00RsqyRe" user.save # => true user.authenticate("notright") # => false user.authenticate("mUc3m00RsqyRe") # => user User.find_by_name("david").try(:authenticate, "notright") # => nil User.find_by_name("david").try(:authenticate, "mUc3m00RsqyRe") # => user
Source
# File activemodel/lib/active_model/secure_password.rb, line 34
def has_secure_password
# Load bcrypt-ruby only when has_secured_password is used to avoid make ActiveModel
# (and by extension the entire framework) dependent on a binary library.
gem 'bcrypt-ruby', '~> 3.0.0'
require 'bcrypt'
attr_reader :password
validates_confirmation_of :password
validates_presence_of :password_digest
include InstanceMethodsOnActivation
if respond_to?(:attributes_protected_by_default)
def self.attributes_protected_by_default
super + ['password_digest']
end
end
end
Defined in activemodel/lib/active_model/secure_password.rb line 34
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveModel::SecurePassword::ClassMethods