Rails设计reset_password_token一直被标记为"已过期"

jsh*_*hou 8 ruby-on-rails-plugins devise

我正在尝试使用devise的reset_password_token强制用户在第一次登录时更改密码,使用我在此处阅读的内容:Rails设计:设置密码重置令牌并重定向用户

我得到的页面加载显示"设置您的密码",但每次我点击提交时,都会发出一条通知,说明reset_password_token已过期并请求新的.我已经尝试将reset_password_token设置为变量,而不是通过用户对象(@ user.reset_password_token)进行访问,以防万一是通过访问该令牌计算到期,但是当我尝试设置初始密码时它仍然表示它已过期.我不确定如何计算到期时间,有人有想法吗?

jsh*_*hou 16

找到答案了!

当生成reset_password_token时,@user.reset_password_sent_at 需要设置为Time.now,否则当设备运行 @user.reset_password_period_valid?以确定重置令牌是否仍然有效时,它将变为nil并假设令牌已过期.