我想让用户有机会更新一些用户信息。现在只有姓名和电子邮件。用户需要输入当前密码来授权更新。我尝试了几种方法,归结为以下问题:
在更新用户属性之前,我调用了“validate_password”方法。
users_controller.rb:
def update
@user = User.find(params[:id])
respond_to do |format|
if validate_password(params[:password]) && @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'Account was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
结尾
application_controller.rb:
def validate_password(pswd)
if current_user.password_hash == BCrypt::Engine.hash_secret(pswd, current_user.password_salt)
true
else
false
end
结尾
即使使用正确的密码“pswd”,它也会返回 false。我错过了什么吗?如果您知道正确的盐,您可以重新创建密码哈希吗?