gpt4 book ai didi

ruby-on-rails - Rails > 设计密码加密

转载 作者:行者123 更新时间:2023-12-04 16:46:23 29 4
gpt4 key购买 nike

我正在尝试实现一种方法,以允许无论如何从设计之外的另一个服务更改密码。

# Profile password change
def change_password(oldpass, newpass)
pepper = nil
cost = 10

# Encrypt plain text passwords
encrypt_old = ::BCrypt::Password.create("#{oldpass}#{pepper}", :cost => cost).to_s

# Validate old
if self.encrypted_password == encrypt_old
encrypt_new = ::BCrypt::Password.create("#{newpass}#{pepper}", :cost => cost).to_s
self.encrypted_password = encrypt_new
self.save
else
Logger.new("Wrong old password!")
end
end

似乎我的密码加密错误 oldpass 包含旧密码的纯文本,我需要对其进行哈希处理,看看它是否与当前密码匹配,然后允许存储新密码。然而,我得到的只是错误的密码。

重做:
def change_password(oldpass, newpass)
if valid_password?(oldpass)
password = newpass
save
return true
else
return false
end
end

最佳答案

如果您在应用程序或 Rails 控制台中,则不需要自己加密密码。

只需按照以下方式更新用户,Devise 就会自行处理。

user.password = new_password
user.save

然后设计将加密密码并存储它。您只需要确保 user.password_confirmationnil .如 password_confirmation是别的,它将与 password 匹配.

编辑

您可以通过以下方式检查现有密码: user.valid_password?(old_password)

关于ruby-on-rails - Rails > 设计密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647310/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com