0

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

我的 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

创建帐户时,用户必须输入姓名、电子邮件、密码和密码确认,但如果我进入 rails 控制台并查找表,它有一个encrypted_pa​​ssword,而不是密码和密码确认。

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

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

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

4

1 回答 1

0

如果我是你,我将使用已经创建的内容并追求:

授权逻辑

设备

于 2012-06-21T21:57:49.610 回答