データの登録フォームから送信されたデータを、その作成者の情報とともに保存するようなControllerを作成しました。
その時点で、Deviseで認証を済ませていて、current_user
でUserを取得し、そのid
を保存するような想定でした。
しかし、フォームでPOSTした時点で、ログアウトされた状態としてUserが取得できず、エラーになってしまいます。
エラーの画面で、session
を取得してみたところ
>> session => {} >>
と、Sessionがクリアされて、それによってDeviseがサインアウト状態になったものと考えています。
いろいろ調べて、CSRF対策の機能で、検証に失敗してSessionがクリアされているようだと判断しました。
しかし、フォームには<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
でCSRFトークンを追加しています。
application_controllerの
protect_form_forgery
を
protect_form_forgery with: :exception
に変えてみたところ、ActionController::InvalidAuthenticityToken
エラーが出ています。
CSRFトークンの取得の仕方が間違っているのでしょうか?
あなたの回答
tips
プレビュー