【问题标题】:Devise 3.1 Upgrade Invalid Token Error设计 3.1 升级无效令牌错误
【发布时间】:2013-09-30 05:50:06
【问题描述】:

我的应用一直在使用 devise (3.1.0, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.2.4),所以当前版本是 3.1.0。通过此次升级,Devise 提供了一种新的令牌确认方式 (blog)。

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

【问题讨论】:

  • 仔细检查电子邮件链接是否将您带到正确的环境。我在开发测试时遇到过同样的问题:电子邮件链接将我带到生产站点并给出无效令牌错误。

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


【解决方案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),则您在电子邮件中使用加密版本,需要将其更改为引用由 Devise 定义的 @token 变量反而。这是一个示例电子邮件:https://github.com/plataformatec/devise/blob/2a8d0f9beeb31cd2287094c5dcf843d0bd069eb8/app/views/devise/mailer/reset_password_instructions.html.erb#L5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多