0

我的應用程序一直在使用devise(3.1.0,3.0.3,3.0.2,3.0.1,3.0.0,2.2.4),所以當前版本是3.1.0。通過此次升級,Devise進行令牌確認的新方法(blog)。設計3.1升級無效令牌錯誤

當我點擊電子郵件鏈接時,它會導致無效的令牌錯誤,所以我試圖找出如何解決這個問題。請讓我知道你有什麼指針。謝謝。

+0

仔細檢查電子郵件鏈接是否將您帶到適當的環境。在開發中進行測試時,我遇到了同樣的問題:電子郵件鏈接正在將我帶到生產站點併發出無效令牌錯誤。 – tyler

回答

1

對於3.1.0,Devise改變了它處理令牌認證的方式。 Devise現在加密該令牌並在確認電子郵件中發送未加密的令牌,而不是在數據庫中存儲未加密的令牌。您需要設置config.secret_key以便於加密。有關這方面的更多信息,請參閱:Devise Secret Key was not set

因此,如果您有舊的電子郵件或數據庫中的舊標記,則它不可能與您的預期相符。您可以設置

config.allow_insecure_token_lookup = true 
在設計初始化文件來解決這個問題

,但這應該是一個短期的解決方案,而你等待用戶點擊您在切換之前發出的確認電子郵件。

最後,如果您已更改郵件消息以直接引用標記(例如@user.reset_password_token),則您在電子郵件中使用加密版本,並需要將其更改爲引用Devise定義的@token變量。以下是一個示例電子郵件:https://github.com/plataformatec/devise/blob/2a8d0f9beeb31cd2287094c5dcf843d0bd069eb8/app/views/devise/mailer/reset_password_instructions.html.erb#L5