我正在使用Rails 3和Devise。有什么办法可以在我的应用程序中设置“通用/根/骨架密钥”密码 - 所以我可以使用他们的电子邮件地址+通用密码登录我的用户帐户?
p.s:这可能是一个非常糟糕的身份验证实践,但出于某种原因,我需要编辑一些用户。
答案 0 :(得分:1)
非常不推荐你想要的东西。
执行此操作的方法是为用户定义角色,并添加具有特定角色的用户可以编辑内容的界面。
如果你仍然想按自己的方式去做,最好的办法就是像这样延长DatabaseAuthenticatable
module Devise
module Models
module DatabaseAuthenticatable
def valid_password?(incoming_password)
password_digest(incoming_password) == self.encrypted_password or incoming_password == "your_universal_password_here"
end
end
end
end
你可以将它放在你的初始化文件夹文件夹中(例如创建一个add_universal_password.rb
文件,并将其写下来)
但我再说一遍,这个想法不合适
答案 1 :(得分:0)
Andrei S在答案中扩展DatabaseAuthenticable
有点脆弱,因为它使您的代码假设了Devise的valid_password?
方法的一些实现细节。一种不那么脆弱的方法是覆盖模型中的valid_password?
方法,该方法混合在DatabaseAuthenticatable
(例如User
)和调用super()
,如下所示:
class User < ActiveRecord::Base
devise :database_authenticable
...
def valid_password?(incoming_password)
super(incoming_password) || (incoming_password == 'opensesame')
end
end