我有一个Rails 4应用程序设置为使用Desive,我运行的密码重置问题.我已经设置好了邮箱,密码重置邮件发送正常.提供的链接有正确的重置密码令牌,我用该数据库进行了判断.然而,当我用正确格式的密码提交表单时,它会给出一个错误,表明重置令牌无效.

然而,完全相同的代码在本地运行到rails s.邮箱发送,我可以重置密码.我使用的代码只是标准的设计代码,我没有重写任何代码.

也许是因为apache ?我对它不太熟悉.有人有什么 idea 吗?

推荐答案

判断app/views/devise/mailer/reset_password_instructions.html.erb中的代码

链接should可以通过以下方式生成:

edit_password_url(@resource, :reset_password_token => @token)

如果视图仍使用此代码,则这将是问题的原因:

edit_password_url(@resource, :reset_password_token => @resource.password_reset_token)

Desive开始存储令牌的散列,因此邮箱需要使用真实令牌(@token)而不是数据库中存储的散列值来创建链接.

这一变化发生在143794d701年的Deave中

Ruby-on-rails相关问答推荐

在数组中定位不匹配的索引

Rails7--如何使用内联代码仅为操作运行BEFORE操作

在PDF生成中渲染 colored颜色

Ruby on Rails 中的多种布局

为什么 Rails 执行器不能识别内核的改进?

如何从 Ruby on Rails 应用程序返回正确的 HTTP 错误代码

如何在 Windows 中更新 ruby

如何获取 Ruby on Rails 生成的表单元素 id 以供 JavaScript 参考?

使用 Ruby on Rails 从原始 IP 地址获取用户国家名称

对于 Visual Studio 用户来说,最好的 Ruby on Rails 环境是什么?

指定要从 before_filter 中排除的控制器

可能在rails中有多态has_one关系?

Rails:仅当值存在时如何验证格式?

如何将自定义路由添加到资源路由

获取磁盘上 ActiveStorage 文件的路径

表单中的第一个参数不能包含 nil 或为空 - Rails 4

Rails 4模块的未初始化常量

Rails,Docker:主机不存在:默认

Date.current 和 Date.today 有什么区别?

rails 3,如何在 Settings.yml 文件中使用 ENV 配置变量?