2011-01-31 8 views
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 
+0

プレーンテキストのパスワードを見つけようとするのは、おそらく非公式です。 :) – Rimian

答えて

関連する問題