3

我正在尝试在设计中关闭#registerable,并仅通过控制台和种子数据注册用户,但是我在登录时遇到问题。

  1. 我通过控制台创建了一个用户:User.create!(电子邮件:'example@example.com',密码:'password',用户名:'username')
  2. 它通过验证并保存到数据库中
  3. 当我提供电子邮件:user@example.com 和密码:password 时,我无法使用此用户登录(通过网站表单)
  4. 这是密码,但在控制台中:

    u = User.find_by_email('example@example.com')
    
    u
     => #<User id: 6, email: "example@example.com", encrypted_password: "$2a$10$xd0PMJ.qDDu6VtFd6i2EM.bQ0h1rvODyzaqFdzo3Uo4C...", username: "user", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-09-30 01:25:16", updated_at: "2013-09-30 01:25:16">
    
    
    u.valid_password? 'password'
     => true
    

我尝试了多个用户,并尝试使用 db/seed.rb 创建它。同样,它确实进入了数据库,一切看起来都很好。它只是不会登录。我还尝试使用匹配的密码添加 password_confirmation 字段,没有骰子。

如果我在用户模型中打开 :registerable ,转到注册页面,注册一个用户,我可以使用该用户登录(通过表单创建)。

我唯一的想法是加密密码的生成方式存在某种差异?但这不成立,因为我可以对网络创建的用户运行相同的 find_by_email/valid_password 检查。

任何帮助将不胜感激?

编辑:

我没有使用 Confirmable,这是我的设计属性:

     devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatablen

Edit2 现在我无法使用我的网络创建帐户登录。我需要做更多的调试。

4

2 回答 2

3

假设您使用的是Confirmable,请使用以下命令创建用户:

User.create!(email: 'example@example.com', password: 'password', username: 'username', confirmed_at: Time.now)

否则,设计将等待用户确认他们的电子邮件地址,这永远不会发生

于 2013-09-30T02:38:56.630 回答
3

我解决了这个问题。我在设计初始化程序中进行了错误配置。我误读了 config.authentication_keys 行,并认为它是/或用于密钥而不是所有密钥。如果其他人通过 google 找到了这个,我建议返回到自动生成的初始化程序或 git roll back 到它。我认为这与用户创建或 :registrable 设计模块的差异无关。

于 2013-09-30T17:05:25.973 回答