我在我的控制器中添加了一个函数,唯一的目标是通过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发送电子邮件。我认为这不是一个令牌截断问题。
我使用最新版本的devise在Heroku cedar上运行rails应用程序。
有什么想法吗?
发布于 2013-10-19 09:01:08
我刚刚也遇到了同样的问题。在我的例子中,这是因为user是unscoped。似乎在这种情况下找不到用户。
它位于/lib/devise/models/authenticatable.rb第113行的设计源文件中
recoverable = find_or_initialize_with_error_by(:reset_password_token, reset_password_token)它不会搜索unscoped。
我会分叉回购,让我知道如果你也有兴趣。
https://stackoverflow.com/questions/14460938
复制相似问题