ActiveModel 的 SecurePassword 模型只做 bcrypt,我遇到了死胡同。(我需要使用不同但同样安全的哈希存储密码,以便导出和使用 Dovecot IMAP 身份验证的哈希密码。)
这对每个人来说可能都是一个有用的功能,所以我最终会把它做成一个补丁。但现在,我想给 SecurePassword 模块打补丁。但是,我不确定如何以这种方式解决这个问题,以确保在将问题包含在其他任何地方之前对其进行修补。
感谢您的提示!
ActiveModel 的 SecurePassword 模型只做 bcrypt,我遇到了死胡同。(我需要使用不同但同样安全的哈希存储密码,以便导出和使用 Dovecot IMAP 身份验证的哈希密码。)
这对每个人来说可能都是一个有用的功能,所以我最终会把它做成一个补丁。但现在,我想给 SecurePassword 模块打补丁。但是,我不确定如何以这种方式解决这个问题,以确保在将问题包含在其他任何地方之前对其进行修补。
感谢您的提示!
根据我的经验(至少使用 Rails 3.2,不能说早期版本,因为我上次使用 Rails 是在 2.x 天),最简单的入门方法是将代码保存到文件中,secure_password.rb
例如config/initializers
.
在config/initializers/secure_password.rb
中,您几乎可以侥幸逃脱,但在您的情况下,您可能想去:
module ActiveModel
module SecurePassword
module InstanceMethodsOnActivation
def authenticate(unencrypted_password)
# Replace calls to BCrypt here
end
def password=(unencrypted_password)
# and here
end
end
end
end
有关 Rails 初始化和配置的更多信息,请参阅http://guides.rubyonrails.org/configuring.html。
(未经测试,但我已经ActiveRecord::Timestamp
像那样打了猴子补丁,这一切都可以正常工作。)