1
0

More than 1 year has passed since last update.

DeviseTokenAuthでCookieを使用する方法【Rails】

Posted at

DeviseTokenAuthの設定を変更する

認証トークンの送受信にCookieを使用するためにcookie_enabledtrueにします。
cookieに関する設定はcookie_attributesに記述します。
設定項目については以下を参照してください。

devise_token_auth.rb
DeviseTokenAuth.setup do |config|
 # ...

  config.cookie_enabled = true

  config.cookie_attributes = {
    http_only: true,
    secure: true,
    same_site: "None"
  }

 # ...
end

cookie_attributesexpiresを設定するとサーバー起動時に設定されてしまうため、set_cookieの処理を変更してヘッダーのexpiryの値が設定されるようにする必要があります。

cookiesを使用可能にする

APIモードではcookiesが使用できないため、使用可能にするためにapplication_controller.rbに以下を追記します。

application_controller.rb
class ApplicationController < ActionController::API
  include ActionController::Cookies

# ...
end

フロントエンドのfetchを変更する

フロントエンドでfetchの処理にcredentials: 'include',を以下のように追加します。

export async function login({ email, password }) {
  try {
    const res = await fetch(
      `${process.env.NEXT_PUBLIC_API_BASE_URL}/v1/auth/sign_in`,
      {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          email,
          password,
        }),
        credentials: 'include',
      }
    )
// ...

参考

1
0
0

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
1
0