我目前正在开发一个rails应用程序,它可以存储清晰的密码(…)。因此,我将迁移到authlogic身份验证,使用“标准”sha512加密。
我做得很好:
#file /models/user.rb
class User < ActiveRecord::Base
acts_as_authentic { |c|
c.transition_from_crypto_providers = [MyOwnNoCrypto, Authlogic::CryptoProviders::Sha512]
}
end
#file /lib/my_own_no_crypto.rb
class MyOwnNoCrypto
def self.encrypt(*tokens)
return tokens[0] # or tokens.join I guess
end
def self.matches?(crypted_password, *tokens)
return crypted_password == tokens.join
end
end
这很好,而且工作很好,但是我想知道是否有一种更性感的方式,也许有一个AuthLogic核心选项?
谢谢!
最佳答案
我同意thomasfedb's answer中建议一次性转换而不是使用authlogic的转换模型的部分。在这种情况下,您希望尽快加密这些密码,而不是在用户下次登录时。不过,我建议迁移,而不是rake任务:
# in db/migrate/nnnnnnnn_encrypt_passwords.rb:
class EncryptPasswords < ActiveRecord::Migration
def self.up
add_column :users, :crypted_password
User.each do |u|
u.encrypt_password!
end
remove_column :users, :password
end
def self.down
raise IrreversibleMigration.new('Cannot decrypt user passwords')
end
end
关于ruby-on-rails - 从清除密码存储区迁移到authlogic,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3074703/