2014 2月20日 14:00
Devise で登録時にConfirmation Token が不正な値というエラー
Devise で確認メールで確認してから有効にする機能 Confirmable の機能をつかってたのだけど、トークンが不正というエラーがおきた。 この問題は devise 3.1.0 より前で、確認のために送信されるメールの内容をカスタマイズしていれば起きてるんじゃないかと思う。 DBに格納される Token の値が HMAC されるようになったらしい。 Use HMAC on tokens stored in the DB · 143794d · plataformatec/devise · GitHub そのため、画面をカスタマイズしている場合、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 検索したら、デプロイされたのは最近だった。 参考 直してから探したやつだけど。