我有一个rails应用程序,我需要添加身份验证。问题是我有一个带有自定义用户和密码字段的遗留数据库(t_user和t_pass)。另外,t_pass未加密。
我正在寻找的是http_basic,但我可以使用current_user等方法,并且可能有更好的用户界面。我不需要验证,密码重置,任何东西。只是一种验证我的方式的方法。我使用restful_authentication但我在rails 3上。我看到一个可以使用rails 3的fork,但我想知道是否有更好的方法来处理这种情况?
答案 0 :(得分:1)
在我看来,你可以使用Devise和一些额外的游戏来做你需要的事情。具体来说,您需要:
valid_password?
以检查您的t_pass
字段。self.find_for_database_authentication
以根据t_user
字段找到您的模型。如果您想支持注册,您可能还需要编写新的加密策略。
只是提醒一句:以纯文本格式存储密码是非常不良做法。如果您有任何选择,我会认真考虑将现有用户迁移到Devise的标准结构中,并使用加密密码。
答案 1 :(得分:0)
如果您正在寻找可供使用的替代宝石,那么您可以尝试Devise。您可以扩展/更改默认设置以达到您想要的效果。
答案 2 :(得分:0)
Devise和Authlogic是两个潜在的选择。不能评论Devise我害怕因为我从未使用过它。现在似乎很受欢迎。
以下内容将帮助您开始使用Authlogic:
class User < ActiveRecord::Base
acts_as_authentic do |config|
config.login_field = :t_user
config.crypted_password_field = :t_pass
config.crypto_provider = YourCryptoProvider
end
...
end
有关于获取authlogic的基础知识的转播。
这很困难的部分是您需要按照http://rdoc.info/github/binarylogic/authlogic/master/Authlogic/CryptoProviders所述创建自己的加密提供程序类,因为authlogic不提供纯文本密码检查方法。
如上所述,如果您可以选择将密码迁移到加密版本,那么它将阻止您与auth框架作斗争。