4

我在我的控制器中添加了一个函数,唯一的目标是通过 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 cedar 上运行 rails 应用程序。

任何想法 ?

4

1 回答 1

1

我刚遇到同样的问题。就我而言,这是user因为unscoped. 在这种情况下,似乎没有找不到用户。

它位于/lib/devise/models/authenticatable.rb的 Devise 源代码的第 113 行

      recoverable = find_or_initialize_with_error_by(:reset_password_token, reset_password_token)

哪个不搜索unscoped

我会分叉回购,如果你也有兴趣,请告诉我。

于 2013-10-19T01:01:07.807 回答