Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@yamagai

フロント側でAPIからのSet-Cookieを無効にする方法

背景

deviseを使って作成したRails製Webアプリのモバイルアプリ版を作成するため、devise-token-auth でトークン認証出来るようにしようとしたところCookieが効いて別のユーザー情報が返ってきてしまう。

やっていたこと

devise-token-authで作成したエンドポイントをフロントから叩いてチェックしていました。
直接curlで叩いたら上手くいくのに....

解決策

import { NativeModules } from 'react-native';

NativeModules.Networking.clearCookies(() => { });

参考記事そのままですが、フロント(ReactNative)側でこのようにするとAPIから送られたCookieがフロント側でクリアされ期待した通りの動作をするようになりました。

今回はフロント側で対応しましたが、バックエンド側でdevise-token-authのcontrollerをオーバーライドして対応することも出来るようです。

なぜCookieが保存されていたか

ネイティブアプリではデフォルトでCookieが保存されるようです。
ちなみに、RailsのAPIモードではデフォルトでCookieが使えないようになっているものの、今回は既存のWebアプリにdevise-token-authでトークン認証をつけようとしていたためCookieが渡されるようになっていました。

参考記事

ちなみに

Memopicというアルバム・写真共有サービスを作っています。是非使ってみてください!
ご意見・ご要望などあればこちら(memopic.bamboo@gmail.com)までお願いします。

ここだけでなくdevise-token-authを導入する時もdeviseとの共存させるのに少しハマったので、そこについての記事も近々書こうと思ってます〜

ご指摘、ご意見お待ちしてます!

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What is going on with this article?