s_kajigo
@s_kajigo (kaji shogo)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Rails devise_token_auth サインイン時にcookie over flowとなってしまう。

Ruby on Railsのapiモードでwebアプリを作成中です。railsのバージョンは6です。

認証機能にdevise_token_authを使用しているのですが、タイトルの通りエラーが出てしまいうまくいきません。

もともと以下のコードで問題なく機能していました。

api.js
// サインイン
export const signIn = (params) => {
//paramsにはemail,passwordが格納されている。
 return client.post("/auth/sign_in", params);
};

//サインインが成功すると実行される。
export const getCurrentUser = async () => {
 if (
  !Cookies.get("_access_token") ||
  !Cookies.get("_client") ||
  !Cookies.get("_uid")
 )
  return console.log("ログイン中のユーザーはいません。");
 const res = await client.get("/auth/sessions", {
  headers: {
   "access-token": Cookies.get("_access_token"),
   "client": Cookies.get("_client"),
   "uid": Cookies.get("_uid"),
  },
 })
 const userData = res.data.currentUser
 userData.follows = res.data.follows
 userData.followers = res.data.followers
 userData.notification = res.data.notification
 return (
  { user: userData, status: res.status }
 )
};
sessions_controller
class Api::V1::Auth::SessionsController < DeviseTokenAuth::SessionsController

  def index
    if current_api_v1_user
      follows = current_api_v1_user.followings
      followers = current_api_v1_user.followers
      notification = current_api_v1_user.passive_notifications.where(checked: false).count
      render json: {status:200 ,current_user: current_api_v1_user ,follows: follows, followers: followers, notification: notification }
    else
      render json: {status: 500, message: "ユーザーが存在しません"}
    end
  end

end

そこにOminuAuthを追加しようと考え 、omniauthではsessionを有効にすることでcrsf対策をしているため以下の追記が必要であるということを知り、application.rbに以下を追記しました。

application.rb
config.session_store :cookie_store, key: '_interslice_session'
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore, config.session_options

そこで今まで通りのemail、passwordでのログインをしようとしたところ画像のエラーが発生するようになりました。
スクリーンショット 2022-12-13 17.30.06.png

調べたところCookieのサイズを減らしたり、保存場所を変更させたりといった対応については知ることができたのですが、なぜもともと動いていたのがapplication.rbへの追記でエラーとなったのかがわかりません。
今回お聞きしたいのは、
1、もともとCookieを使用せずにjsonデータをフロントで受け取り動いていたのがなぜCookieを使うようになり、容量オーバーとなってしまったのか
2、Cookie保存場所を変更する以外の対策として、レスポンスにCookieは使用せず、omniauthで使用するときだけsessionを使用するような制限は可能なのか
です。

的を得ない質問かもしれませんが少しでもヒントをいただけたら幸いです。
よろしくお願いします。

0

No Answers yet.

Your answer might help someone💌