7
単純なMD5の無制限パスワードを使用するレガシーシステムからDeviseに移行しています。私は実際にをbcryptパスワードメカニズムに移行したいと考えているので、Devise wikiで私自身の暗号化装置を推奨しています。特に周り、次のコードへの副作用があるかもしれない場合レガシーパスワードからレールへの移行devise
また、これは虹のテーブルをダウンロードし、すべての平文パスワードを発見しようとするよりも、より合理的と思われる...
だから、私は思ったんだけどセーブ!臆面もなくから盗まれ
## config/initializers/legacy.rb
require 'bcrypt'
require 'digest/md5'
module Devise
module Models
module DatabaseAuthenticatable
def valid_password?(password)
if self.legacy_password_hash
if ::Digest::MD5.hexdigest(password) == self.legacy_password_hash
## authenticated; now convert to bcrypt password
self.password = password
self.legacy_password_hash = nil
self.save!
return true
else
## so that we don't get a bcrypt invalid hash exception
return false
end
else
return ::BCrypt::Password.new(self.encrypted_password) == "#{password}#{self.class.pepper}"
end
end
end
end
end
プレーンテキストのパスワードを見つけようとするのは、おそらく非公式です。 :) – Rimian