我在我的控制器中添加了一个功能,唯一的目标是通过API请求触发忘记密码程序。
这是reset_password
方法 -
def reset_password
@user = User.find_by_email(params[:email])
@user.send_reset_password_instructions
respond_to do |format|
format.xml { render :xml => user_api_ressource(@user, :xml)}
format.json { render :json => user_api_ressource(@user, :json)}
end
end
我收到带有重置密码链接的邮件,它会打开我可以设置新密码的页面,但是当我提交表单时,它表示令牌无效。
我正在使用sendgrid发送电子邮件。我认为这不是一个令牌截断问题。
我正在使用最新版本的设计在Heroku雪松上运行rails应用程序。
有什么想法吗?
答案 0 :(得分:1)
我刚遇到同样的问题。就我而言,这是因为user
是unscoped
。在这种情况下,似乎没有找到用户。
第113行/lib/devise/models/authenticatable.rb中的设计来源
recoverable = find_or_initialize_with_error_by(:reset_password_token, reset_password_token)
不搜索unscoped
。
我会分发回购,如果您有兴趣,请告诉我。