设计3.1升级无效令牌错误

时间:2013-09-24 20:22:57

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 devise devise-confirmable

我的应用程序一直在使用设计(3.1.0,3.0.3,3.0.2,3.0.1,3.0.0,2.2.4),所以当前版本是3.1.0。通过此升级,Devise可以通过新的方式进行令牌确认(blog)。

当我点击电子邮件链接时,会导致无效的令牌错误,因此我正在尝试找出解决此问题的方法。请告诉我你的任何指示。谢谢。

1 个答案:

答案 0 :(得分:1)

使用3.1.0,Devise改变了它处理令牌认证的方式。 Devise现在加密该令牌并在确认电子邮件中发送未加密的令牌,而不是将未加密的令牌存储在数据库中。您需要设置config.secret_key才能实现此加密。有关详细信息,请访问:Devise Secret Key was not set

因此,如果您在数据库中有旧电子邮件或旧令牌,则它可能不符合您的预期。你可以设置

config.allow_insecure_token_lookup = true
在您的Devise初始化程序文件中

以解决此问题,但是当您等待用户点击您在切换之前发送的确认电子邮件时,这应该是一个短期解决方案。

最后,如果您已将邮件更改为直接引用令牌(例如@user.reset_password_token),则表示您在电子邮件中使用加密版本,并且需要将其更改为引用@token变量由Devise定义。这是一封电子邮件示例:https://github.com/plataformatec/devise/blob/2a8d0f9beeb31cd2287094c5dcf843d0bd069eb8/app/views/devise/mailer/reset_password_instructions.html.erb#L5