【问题标题】:Warden not accessing the database (Devise)Warden 没有访问数据库(设计)
【发布时间】:2014-04-08 10:14:32
【问题描述】:

导轨 3.2。你好。目前,应用程序已经实现了我们所做的身份验证系统,我们将迁移到设计中。我在这里束手无策,试图让设计登录工作。不知何故,我已将问题深入到 Devise 实际创建用户会话的部分。

def create
  self.resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_flashing_format?
  sign_in(resource_name, resource)
  yield resource if block_given?
  respond_with resource, location: after_sign_in_path_for(resource)
end

Routes(我已经更改了设计控制器,实际上只是粘贴了设计控制器代码以使用 pry 进行调试):

devise_for :users, controllers: { sessions: "sessions" }

这里的问题是warden 甚至没有使用authenticate 访问数据库。它只返回nil。我检查了我的另一个更简单的应用程序,authenticate 的行为会扫描数据库,无论电子邮件/密码是否正确。我如何让 Warden/Devise 实际执行 select 语句来检查数据库?

(如果有什么我可以粘贴来帮助你们的,我会粘贴它)

【问题讨论】:

  • 模型中的“设计”成员是什么样的?
  • 你发现了吗?我遇到了同样的问题。

标签: ruby-on-rails ruby-on-rails-3 devise warden


【解决方案1】:

如果它可以帮助其他人:我遇到了同样的问题。问题的根源是我有一个自定义的 app/views/sessions/new.html.erb 视图,不是从 devise 复制的。

更多信息请参见https://github.com/plataformatec/devise/issues/3700

【讨论】:

    【解决方案2】:

    尝试在控制台中查看您的设计模型的身份验证密钥:

    (your_model).authentication_keys
    

    如果结果是您需要的不同的尊重键(即电子邮件),只需在您的模型中添加明确:

    :authentication_keys => [:email]
    

    我就是这样解决的。希望对您有所帮助

    再见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 2014-04-01
      • 2011-03-30
      相关资源
      最近更新 更多