【问题标题】:attr_encrypted and postgresql, does it work?attr_encrypted 和 postgresql,它有效吗?
【发布时间】:2013-07-25 12:36:28
【问题描述】:

Des attr_encryptor(或 attr_encrypted)与 Postgresql 一起使用? 数据没有保存,我写的时候

@object.encrypted_value 

我有一些东西,但它从未保存过……或者我做错了什么?

我的模型看起来像:

Model User < Activerecord::Base
  attr_accessible :name, :email
  attr_encrypted :email, :key => "asecretkey"
end

在我的 DDB 中,我有 User(name, encrypted_email, encrypted_email_iv, encrypted_email_salt),每个用户都有不同的字符 (255)。

我的表单就像 c.email(而不是 c.encrypted_email,对吗?)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 encryption gem postgresql-9.1


    【解决方案1】:

    你的模型是什么样的?如果你有一个@object.my_value = 'thing',那么你的模型应该看起来大致像

    class MyObject
      attr_encrypted :my_value, :key => 'a secret key'
    end
    

    在赋值后不要忘记在对象上调用#save。如果需要,您应该能够使用@object.encrypted_my_value 取回加密的有效负载。 DB 还需要一个名为 encrypted_my_value 的字符串字段。

    【讨论】:

    • 所以当您调用@object.save 时,它​​不会将加密数据保存到数据库中吗? (在您的情况下是一个名为 encrypted_email 的字段)
    • 有了 better_errors,当我写“@user”时,我对电子邮件没有任何价值,但是当我写“@user.email 或 @user.encrypted_email”时,我有。正常吗?保存的时候报错,因为“email”字段不存在,这是正常的,因为是“encrypted_email”...
    • 更改您的模型以从您的 attr_accessible 列表中删除 :email。 attr_encrypted 为您提供 getter(并自动解密该值)。
    • 没有它,我有一个错误“无法批量分配受保护的属性:电子邮件”
    • 啊,是的,我的错。你现在用的是哪个宝石?您是否尝试过github.com/danpal/attr_encryptor(当前版本 2.0)而不是旧的 attr_encrypted?如果您使用该 gem,您还需要将 _iv 和 _salt 字段添加到您的数据库中。
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2017-12-17
    • 2011-06-16
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多