1

次のように、入力値をいくつかの暗号化に暗号化することは可能ですか:

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

しかし、ビューでこれを行うと、そのビューには多くのロジックがなくなります。おそらくヘルパーとして行うでしょうか? しかし、どのように?

たとえば、そのような文字列を変更します

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

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

では、レールで入力名をエンコードする方法は?

また、なぜこれを行う必要があるのか​​ 聞かないでください...答えがありますか?それを与える...

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 を使用して、暗号化された文字列の 1 つを渡して、実際のメソッド名を特定できませんでしたか? ゲッターとセッターを処理します。何かのようなもの...

form.html.haml

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

model.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 に答える