背景
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との共存させるのに少しハマったので、そこについての記事も近々書こうと思ってます〜
ご指摘、ご意見お待ちしてます!