设备在更新时不会发送正确的重置密码令牌

时间:2015-12-09 11:56:08

标签: ruby-on-rails devise change-password

我正在使用Rails 4.2.5,mongoid 5和ruby 2.2.3的设计3.5。

我添加了recovarable模块,电子邮件已成功发送,点击编辑密码链接后我将路由到http://localhost:3000/researchers/password/edit?reset_password_token=###

我去了mongo shell来验证url中的重置令牌是否正确,它是。

现在,当我输入新密码并单击“更改”时,我得到“无效的重置令牌”,我可以从webbrick控制台清楚地看到,设计使用错误的重置密码令牌向mongodb发送查询查询,我不知道为什么。

我尝试了本地化:reset_password_sent_at并尝试在密码编辑页面上设置reset_token(即Rails强参数),但没有任何效果。

我在SO上看过其他问题,但大多数都是使用旧版本的Rails,设计或查看除我的以外的消息,设计维基没有可恢复的操作方法,所有示例应用程序都没有有邮寄。

我所有的都是可确认的,可注册的,database_authenticatable,除了可以在我的模型上恢复,并且所有控制器都是从设计中复制而没有变化(除了after_pathes和配置参数)。

那该怎么办?

修改

这是我的密码控制器:

  class Researchers::PasswordsController  < Devise::PasswordsController 
  before_action :permit_reset,only: [:edit]
  # GET /resource/password/new
  def new
    super
  end

  # POST /resource/password
  def create
    super
  end

  # GET /resource/password/edit?reset_password_token=abcdef
  def edit
    super
  end

  # PUT /resource/password
  def update
    super
  end

  protected
  def permit_reset
    params.require(:reset_password_token)
  end
  # def after_resetting_password_path_for(resource)
  #   super(resource)
  # end

  # The path used after sending reset password instructions
  # def after_sending_reset_password_instructions_path_for(resource_name)
  #   super(resource_name)
  # end
end

0 个答案:

没有答案