Devise で確認メールで確認してから有効にする機能 Confirmable の機能をつかってたのだけど、トークンが不正というエラーがおきた。
この問題は devise 3.1.0 より前で、確認のために送信されるメールの内容をカスタマイズしていれば起きてるんじゃないかと思う。
DBに格納される Token の値が HMAC されるようになったらしい。
そのため、画面をカスタマイズしている場合、token の取得方法が変えないといけないっぽい。
-<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
+<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %></p>
確認メールだけでなく app/views/devise/mailer
内のファイル全部変えないといけない気がする。
- confirmation_instructions.html.erb
- reset_password_instructions.html.erb
- unlock_instructions.html.erb
あたりですね。
蛇足
v3.1.0 ってリリースされたの9月なんだが…さっき気づいたということは…。とおもって Gemfie.lock を git log –patch Gemfile.lock して devise 検索したら、デプロイされたのは最近だった。
参考
直してから探したやつだけど。