9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails6のAPI使用でCookieを有効にする

Last updated at Posted at 2020-07-08

概要

RailsでAPIを使用するときに、セッション等でCookieを使いたくなる時があると思います。調べるとけっこう記事が出てくると思いますが、何種類か対応方法があるみたいで、今回はRails6でも上手くいった方法を書きます。

対応

【application_controller.rbの設定】

<<2020/7/31追記>>ActionController::Baseを継承する時のみ以下を設定してください、ActionController::APIを継承するときは不要です。

application_controller.rb

class ApplicationController < ActionController::Base
  include ActionController::Cookies

  skip_before_action :verify_authenticity_token

end

【application.rb】

  • 今回はconfig.api_only設定はtrueを前提とします。falseにするとCookieは使えるようになりますが、API利用前提とは少し外れるので。
  • ActionDispatch::CookiesActionDispatch::Session::CookieStoreを使用します。Rails の API モードでセッションを有効にするを参考にしました。私の環境だとActionDispatch::ContentSecurityPolicy::Middlewareを使わなくてもCookie使えましたが、環境によっては使う必要があるのかもです。
application.rb
# requireの設定は記載省略しています
module WebApi
  class Application < Rails::Application
    config.load_defaults 6.0

    config.api_only = true
    config.middleware.use ActionDispatch::Cookies
    config.middleware.use ActionDispatch::Session::CookieStore
  end
end

9
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?