我正在尝试在我的网站上实现“更改密码”功能。
我的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_password ,而不是密码和password_confirmation。
当我从用户那里得到输入(通过表单传递)时,我做了:
@user.update_attributes(:password => params[:password][:password], :password_confirmation => params[:password][:password_confirmation])
@user.save
但这不起作用!我想知道我是否需要解密旧密码并加密新密码才能更新...任何见解?谢谢你的时间!