Rails 3 + Devise:如何设置“通用”密码?

时间:2011-04-12 09:23:09

标签: ruby-on-rails-3 devise

我正在使用Rails 3和Devise。有什么办法可以在我的应用程序中设置“通用/根/骨架密钥”密码 - 所以我可以使用他们的电子邮件地址+通用密码登录我的用户帐户?

p.s:这可能是一个非常糟糕的身份验证实践,但出于某种原因,我需要编辑一些用户。

2 个答案:

答案 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