【问题标题】:Changed devise initializer, now authentication is broken更改了设计初始化程序,现在身份验证已损坏
【发布时间】:2014-07-25 04:10:17
【问题描述】:

我曾尝试在设计的初始化程序中设置基于用户名的身份验证;但事实证明,这需要比我现在愿意在这个应用程序中投入更多的工作,因为它只是为了玩弄。因此,在我最初拥有 config.authentication_keys = [ :username ] 的位置以及其他配置设置中,我将它们全部改回 :email。

问题是,现在当我尝试登录时,出现以下错误:

NoMethodError in Devise::SessionsController#create
undefined method `email' for #<ActionDispatch::Request:0xrequestid>

我怀疑这与我最初涉足基于用户名的身份验证有关,但我不知道我现在需要解决的实际问题/剩余配置在哪里,因为我对 Rails 还很陌生。

我很乐意提供任何日志/配置/您的名字。我只是不知道此时会有什么帮助。

【问题讨论】:

    标签: ruby-on-rails devise initializer


    【解决方案1】:

    你的用户模型中有 :email 字段吗?看起来 Devise 在您登录时尝试获取电子邮件值但失败了。

    【讨论】:

    • 我在架构的用户表中有一个电子邮件字段,因为它是在我创建迁移时生成的。
    【解决方案2】:

    好的,当我将config.authentication_keys 和config.request_keys 改回[:email](默认值)时,我不应该指定它们。无论出于何种原因(我还不知道),这需要我指定强参数,如果我只是将这些行注释掉,这些参数与设计所指定的相同。

    因此,简单的解决方案是,如果您使用默认值,则不要指定任何内容。

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2015-01-16
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多