0

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

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

4

1 回答 1

2

在 3.1.0 中,Devise 改变了它处理令牌身份验证的方式。现在,Devise 不再将未加密的令牌存储在数据库中,而是对该令牌进行加密并在确认电子邮件中发送未加密的令牌。您将需要设置config.secret_key以促进此加密。有关此处的更多信息:未设置设计密钥

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

config.allow_insecure_token_lookup = true

在您的 Devise 初始化程序文件中以解决此问题,但这应该是一个短期解决方案,因为您等待用户单击您在切换之前发送的确认电子邮件。

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

于 2013-09-26T06:55:44.603 回答