1

私は、ActiveModel の SecurePassword モデルが bcrypt のみを実行するという行き止まりにぶつかりました。(Dovecot IMAP 認証用にハッシュ化されたパスワードをエクスポートして使用するために、パスワードを異なるが同等に安全なハッシュで保存する必要があります。)

これは誰にとっても便利な機能かもしれないので、最終的にはパッチに組み込む予定です。しかし今は、SecurePassword モジュールにモンキー パッチを適用したいと考えています。ただし、懸念事項が他の場所に含まれる前にモンキーパッチが適用されるようにする方法でこれに取り組む方法がわかりません。

ヒントをありがとう!

4

1 に答える 1

1

私の経験では(少なくともRails 3.2では、Railsを最後に使用したのは2.x日だったので、以前のバージョンについては言えません)、コードを次のようなファイルに保存するのが最も簡単な方法ですsecure_password.rbconfig/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そのようにモンキー パッチを適用しましたが、すべて正常に動作します。)

于 2012-08-16T15:09:38.247 に答える