我正在使用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