【问题标题】:Devise with existing database: 401 Unauthorized using valid password使用现有数据库设计:401 Unauthorized using valid password
【发布时间】:2013-06-06 10:42:39
【问题描述】:

我正在尝试使用 devise 对我的网站进行用户身份验证。 它使用现有的用户表。

该表有用户名和密码,但是当我尝试登录时,我收到以下错误:

在 90 毫秒内完成 401 Unauthorized。

日志:

Started POST "/users/sign_in" for 127.0.0.1 at 2013-06-06 15:50:01 +0530
Processing by Devise::SessionsController#create as HTML
 Parameters: {"utf8"=>"✓", "authenticity_token"=>"+uKE28LrkWW71EHeasDSDCENQogAGODfBc3ZJJLyi9U=", "user"=>{"email"=>"admin@abc.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
 User Load (0.1ms)  SELECT `users`.* FROM `users` WHERE `users`.`email` = 'admin@abc.com' LIMIT 1
Completed 401 Unauthorized in 90ms
Processing by Devise::SessionsController#new as HTML
 Parameters: {"utf8"=>"✓", "authenticity_token"=>"+uKE28LrkWW71EHeasDSDCENQogAGODfBc3ZJJLyi9U=", "user"=>{"email"=>"admin@abc.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}

【问题讨论】:

  • 您确定使用有效的电子邮件和密码吗?
  • 是的..电子邮件和密码有效。当我创建一个新的用户表时,它可以工作。但我想使用另一个数据库中的现有表。当我在控制台中执行 User.first 时,我会从现有表中看到用户的正确详细信息。
  • 您应该尝试以下解决方案:github.com/plataformatec/devise/wiki/… 这可能是因为旧数据库中的密码以其他方式加密而不是设计。
  • 谢谢。有效!我忘记更改加密密钥了。
  • @user2459261,你应该解释你做了什么作为答案并接受它。另外,您使用的是哪个版本的设计和导轨?

标签: ruby-on-rails authentication activerecord devise


【解决方案1】:

解决了! 我在configs/initializers/devise.rb中更改了rails项目的加密密钥。

Rails 版本:3.2.13 设计版本:2.04

【讨论】:

    【解决方案2】:

    我刚刚遇到了这个确切的问题,但只是在生产中(使用 rails 4 和 devise 3)。

    解决方案是在 config/initializers/session_store.rb 文件中添加域声明,如下所示:

    YourAppName::Application.config.session_store :cookie_store, key: '_your_session', domain: {
      production: 'prpoduction_domain',
      development: 'development_domain'
    }.fetch(Rails.env.to_sym, :all)
    

    尽管最初由于向应用程序添加子域而改变了这一点很重要。

    【讨论】:

      猜你喜欢
      • 2022-11-17
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 2018-02-20
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多