Ruby on rails 在attr_encrypted将所述虚拟属性用于加密密钥之前,未设置虚拟属性
当attr_encrypted调用加密密钥时,:密码短语尚未设置。加密密钥最终是盐的sha1散列;它应该是密码短语和盐的混合体 salt在创建时生成并保存在数据库中 如何在加密密钥中使用:passphrase virtual属性 有什么建议吗 为了简洁起见,我编写了一系列代码 类EmployeeRuby on rails 在attr_encrypted将所述虚拟属性用于加密密钥之前,未设置虚拟属性,ruby-on-rails,virtual-attribute,attr-accessible,attr-accessor,attr-encrypted,Ruby On Rails,Virtual Attribute,Attr Accessible,Attr Accessor,Attr Encrypted,当attr_encrypted调用加密密钥时,:密码短语尚未设置。加密密钥最终是盐的sha1散列;它应该是密码短语和盐的混合体 salt在创建时生成并保存在数据库中 如何在加密密钥中使用:passphrase virtual属性 有什么建议吗 为了简洁起见,我编写了一系列代码 类Employeeproc{employee}{employee.encryption_key} def加密密钥 除非是盐? self.salt=摘要::SHA1.hexdigest生成_盐 终止 摘要::SHA1.hex
class EmployeesController < ApplicationController
def create
ssn = params[:employee].delete(:ssn)
@employee = @parent.employees.new(params[:employee])
@employee.ssn = ssn
if @employee.save
redirect_to @parent
else
render action: "new"
end
end
end
我假设密码短语正在返回到params中的控制器?还有,盐在哪里?已定义?正确:params[:employee][:passphrase]和salt是数据库中的一列。那么,如果是盐呢?返回nil,生成salt.Perfect。有没有办法:在模型中的ssn之前设置密码短语,或者延迟attr_加密,直到设置属性?@pdjk我相信如果您将参数[:employee]转换为有序散列,并确保:passphrase出现在:ssn之前,那么它应该可以工作