更改加密密码(Ruby On Rails)

时间:2012-06-21 19:34:00

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我正在尝试在我的网站上实现“更改密码”功能。

我的user.rb

中有以下内容
before_save :encrypt_password

  def encrypt_password
    self.encrypted_password = encrypt(password)
  end

  def encrypt
    string
  end

  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def encrypt_password
    self.salt = make_salt unless has_password?(password)
    self.encrypted_password = encrypt(password)
  end

  def encrypt(string)
    secure_hash("#{salt}--#{string}")
  end

  def make_salt
    secure_hash("#{Time.now.utc}--#{password}")
  end

  def secure_hash(string)
    Digest::SHA2.hexdigest(string)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)
    return nil if user.nil?
    return user if user.has_password?(submitted_password)
 end

创建帐户时,用户必须输入名称,电子邮件,密码和password_confirmation,但如果我进入rails控制台并查找表格,则会显示 encrypted_pa​​ssword ,而不是密码和password_confirmation。

当我从用户那里得到输入(通过表单传递)时,我做了:

 @user.update_attributes(:password => params[:password][:password], :password_confirmation => params[:password][:password_confirmation])
 @user.save

但这不起作用!我想知道我是否需要解密旧密码并加密新密码才能更新...任何见解?谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

如果我是你,我将使用已经创建的内容并去寻找:

authlogic

device