Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道&x2B;设计密码重置令牌在配置的时间段之前过期_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 轨道&x2B;设计密码重置令牌在配置的时间段之前过期

Ruby on rails 轨道&x2B;设计密码重置令牌在配置的时间段之前过期,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,在我的designe.rb文件中,我将密码令牌的生存时间定义为6小时 Rails Version: 5.0.0.1 Devise Version: 4.2 当我通过忘记密码链接选择密码重置时,我可以看到生成的时间戳和令牌 # Time interval you can reset your password with a reset password key. # Don't put a too small interval or your users won't have the t

在我的designe.rb文件中,我将密码令牌的生存时间定义为6小时

Rails Version: 5.0.0.1
Devise Version: 4.2
当我通过忘记密码链接选择密码重置时,我可以看到生成的时间戳和令牌

  # Time interval you can reset your password with a reset password key.
  # Don't put a too small interval or your users won't have the time to
  # change their passwords.
  config.reset_password_within = 6.hours
活动记录和应用程序时区均设置为
“亚洲/加尔各答”
,但当我单击电子邮件中发送的链接并尝试更改密码(在电子邮件发送后几分钟内)时,密码更改失败,并显示消息

重置密码令牌已过期,请请求一个新令牌

更新一个 我在用户模型中启用了
recoverable
,但在这里没有用

postgres=> select reset_password_token, reset_password_sent_at from users where email='email@gmail.com';
                       reset_password_token                       |   reset_password_sent_at
------------------------------------------------------------------+----------------------------
 89f51bce1bc6b495c16a50b015d03897d0520a8b58c300a5deef16b2c45cac82 | 2016-09-16 21:18:01.322362
密码更新仍然失败,日志中也没有真正的错误

# Time interval you can reset your password with a reset password key.
# Don't put a too small interval or your users won't have the time to
# change their passwords.
config.reset_password_within = 6.hours.from_now

我不认为这是时区问题。您可能想了解以下有关
design
的信息

这是适用于您的型号的设计模块列表。

  • 数据库\u authenticatable–用户将能够使用存储在数据库中的登录名和密码进行身份验证。(密码以摘要的形式存储)
  • 可注册–用户可以注册、更新和销毁他们的个人资料
  • 可恢复–提供重置忘记密码的机制
  • 可记住–启用涉及cookie的“记住我”功能
  • 可跟踪–跟踪登录计数、时间戳和IP地址
  • 可验证–验证电子邮件和密码(可以使用自定义验证程序)
  • 可确认–用户必须在注册后确认其电子邮件,然后才能允许登录
  • 可锁定–在多次身份验证尝试失败后,用户帐户将被锁定
因此,如果您有重置忘记密码问题,您可能需要确保在您的模型中启用了
recoverable

例如,如果用户模型(User.rb),则

I, [2016-09-19T20:54:04.793217 #19146]  INFO -- : Started PUT "/users/password" for ::1 at 2016-09-19 20:54:04 +0530
I, [2016-09-19T20:54:04.795888 #19146]  INFO -- : Processing by Devise::PasswordsController#update as HTML
I, [2016-09-19T20:54:04.796108 #19146]  INFO -- :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"hXJycHI8Xmwo5D1pTS6a+naO1aV6PUDoqNw1kLjxWksF1zf+dEJ/j2KnmlOt0JSSe4F53cVP4uyBw1Pe0G4u8Q==", "user"=>{"reset_password_token"=>"[FILTERED]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Change my password"}
D, [2016-09-19T20:54:04.803200 #19146] DEBUG -- :   User Load (3.8ms)  SELECT  "users".* FROM "users" WHERE "users"."reset_password_token" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["reset_password_token", "f278c026f607eea0f948e79e16861a90c9f1c73af271b2b803787f5fb68bdd04"], ["LIMIT", 1]]

启用
可恢复
对于在Desive中处理重置忘记的密码非常重要

嗯,我不认为这是一个时区问题。您可能想了解以下有关
design
的信息

这是适用于您的型号的设计模块列表。

  • 数据库\u authenticatable–用户将能够使用存储在数据库中的登录名和密码进行身份验证。(密码以摘要的形式存储)
  • 可注册–用户可以注册、更新和销毁他们的个人资料
  • 可恢复–提供重置忘记密码的机制
  • 可记住–启用涉及cookie的“记住我”功能
  • 可跟踪–跟踪登录计数、时间戳和IP地址
  • 可验证–验证电子邮件和密码(可以使用自定义验证程序)
  • 可确认–用户必须在注册后确认其电子邮件,然后才能允许登录
  • 可锁定–在多次身份验证尝试失败后,用户帐户将被锁定
因此,如果您有重置忘记密码问题,您可能需要确保在您的模型中启用了
recoverable

例如,如果用户模型(User.rb),则

I, [2016-09-19T20:54:04.793217 #19146]  INFO -- : Started PUT "/users/password" for ::1 at 2016-09-19 20:54:04 +0530
I, [2016-09-19T20:54:04.795888 #19146]  INFO -- : Processing by Devise::PasswordsController#update as HTML
I, [2016-09-19T20:54:04.796108 #19146]  INFO -- :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"hXJycHI8Xmwo5D1pTS6a+naO1aV6PUDoqNw1kLjxWksF1zf+dEJ/j2KnmlOt0JSSe4F53cVP4uyBw1Pe0G4u8Q==", "user"=>{"reset_password_token"=>"[FILTERED]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Change my password"}
D, [2016-09-19T20:54:04.803200 #19146] DEBUG -- :   User Load (3.8ms)  SELECT  "users".* FROM "users" WHERE "users"."reset_password_token" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["reset_password_token", "f278c026f607eea0f948e79e16861a90c9f1c73af271b2b803787f5fb68bdd04"], ["LIMIT", 1]]


启用
可恢复
对于在Desive中处理重置忘记的密码非常重要

在我自己的情况下,禁用可注册的
不会影响我。你可能想检查你是否启用了
recoverable
。它是在用户模型中启用的打开你的irb控制台并运行
Time。现在
,这样我们就可以查看时间是否与你的本地时间相对应。
MacBook-Pro-2:website anadi$irb 2.3.1:001>Time.now=>2016-09-17 20:30:05+0530 2.3.1:002>
我已经在我的博客中添加了一条评论回答。我希望这能奏效。在测试服务器是否正常工作之前,您也可以重新启动服务器。在我自己的情况下,禁用
registable
不会影响我。你可能想检查你是否启用了
recoverable
。它是在用户模型中启用的打开你的irb控制台并运行
Time。现在
,这样我们就可以查看时间是否与你的本地时间相对应。
MacBook-Pro-2:website anadi$irb 2.3.1:001>Time.now=>2016-09-17 20:30:05+0530 2.3.1:002>
我已经在我的博客中添加了一条评论回答。我希望这能奏效。您也可以在测试服务器是否正常工作之前重新启动服务器。在用户界面中启用了可恢复model@AnadiMisra由于运行了
时间。现在
从您的
irb
可以为您提供正确的时间,然后从您的
design.rb
,将时间计算更改为以下任一项:
config.reset\u password\u in=6.hours.from\u now
config.reset\u password\u in=time.now+6.hours
。注意:您可以执行'Time.zone=“TimeZoneHere”更改时区。我希望这能起作用。初始化器在启动时加载。您希望输入一个持续时间而不是时间,否则一旦您的应用程序运行了6小时,所有令牌都将过期。config.confirm\u in=1。用户中已启用分钟可恢复性model@AnadiMisra由于运行了
时间。现在
从您的
irb
可以为您提供正确的时间,然后从您的
design.rb
,将时间计算更改为以下任一项:
config.reset\u password\u in=6.hours.from\u now
config.reset\u password\u in=time.now+6.hours
。注意:您可以执行'Time.zone=“TimeZoneHere”更改时区。我希望这能起作用。初始化器在启动时加载。你希望输入一个持续时间而不是时间,否则一旦你的应用程序运行了6个小时,所有代币都将过期。c
devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable