1

是否有可能将输入值加密为一些加密,如下所示:

http://dzone.com/snippets/quick-two-encryption

但是在视图中这样做,所以视图没有太多逻辑,也许作为助手?但是怎么做?

例如改变这样的字符串

<input name="person" value="1" />

<input name="c4ca4238a0b923820dcc509a6f75849b" value="1" />

那么,如何在 Rails 中编码输入名称?

另外请不要问我为什么要这样做...有答案吗?给它...

4

2 回答 2

1

尝试生成助手,并放在那里

module EncryptorHelper
    def encrypt_string(name)
    secret = Digest::SHA1.hexdigest(name)
        a = ActiveSupport::MessageEncryptor.new(secret)
        b = a.encrypt("parts")
        b
  end
end

然后你可以在你的输入中调用 ecnrypt_string(123)

于 2013-01-15T20:57:33.363 回答
0

好主意。这根本没有经过测试,但你会明白的。难道你不能使用 method_missing 来传递你的加密字符串之一来找出真正的方法名称吗?让它处理 getter 和 setter。就像是...

form.html.haml

# You'll need to create an encrypt helper.
form_for @model do |f|
  f.input encrypt(person)

模型.rb

class Model

  def method_missing sym, *args
    secret = Digest::SHA1.hexdigest("yourpass")
    a = ActiveSupport::MessageEncryptor.new(secret)

    if sym =~ /^(\w+)=$/
      instance_variable_set "@#{a.decrypt($1)}", args[0]
    else
      instance_variable_get "@#{a.decrypt(sym)}"
    end
  end

end
于 2013-01-14T22:11:21.603 回答