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でのログインをしようとしたところ画像のエラーが発生するようになりました。
調べたところCookieのサイズを減らしたり、保存場所を変更させたりといった対応については知ることができたのですが、なぜもともと動いていたのがapplication.rbへの追記でエラーとなったのかがわかりません。
今回お聞きしたいのは、
1、もともとCookieを使用せずにjsonデータをフロントで受け取り動いていたのがなぜCookieを使うようになり、容量オーバーとなってしまったのか
2、Cookie保存場所を変更する以外の対策として、レスポンスにCookieは使用せず、omniauthで使用するときだけsessionを使用するような制限は可能なのか
です。
的を得ない質問かもしれませんが少しでもヒントをいただけたら幸いです。
よろしくお願いします。
0