FirebaseExtended / FirebaseExtended/reactfire

Permission error when accessing a cached firestore collection after logout/login

オープン
#485 コメント 4 件 リアクション 10 件 担当者 0 名 GitHub で見る
v5
主要言語
TypeScript
スター
3.6k
フォーク
403
平均マージ
14時間 53分
マージ済み PR(30日)
5

説明

### Version info

**React:** 17.0.2

**Firebase:** 9.4.0

**ReactFire:** 4.2.0

**Other (e.g. Node, browser, operating system) (if applicable):** Chrome, Windows 10

### Test case

Test cases seem challenging to produce since a firebase instance is involved.

### Steps to reproduce

1. Sign In (I used `GoogleAuthProvider`), or be already signed-in.
2. Read from a collection.
3. Sign Out
4. Sign In
5. Read from the same collection.

### Expected behavior

The same data is read.

### Actual behavior

`Uncaught FirebaseError: Missing or insufficient permissions.` is thrown.

This seems to be caused by the global cache of collections. The problem can be mitigated by:
* Refreshing the page after sign out
* Changing the `idField` passed to `useFirestoreCollectionData`. Any easy way to test this is to use `id-${auth.stsTokenManager.expirationTime}` as your `idField`, since `expirationTime` changes on every Sign Out/In cycle.

Note that waiting more than 30 seconds does not fix the problem. So, the cache resetting of the collection is insufficient to resolve the issue. I suspect that the collection is associated with the stale auth token which has been disabled due to logout.

A possible resolution might be to purge the cache on sign out.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。