1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebaseのユーザー権限周りの話

Posted at

TL;DR;

  • FireStoreベースとCustomUserClaimベース双方やっておくと便利
  • CloudFunctionで同期を取れるようにしておくとなお良し

Firebaseでのユーザー権限

FirebaseでAdminだったりだとか課金ユーザーだったりとかの、一定の権限を持ったグループを作る場合、
カスタムユーザークレームを使うのと、
Firestoreに権限管理用のcollectionを作ってセキュリティルールで頑張るパターン(existsなどを書く)があります。

それぞれのメリットデメリット

カスタムユーザークレーム

メリット

  • FireStoreに依存しないので、Storageのルールでも利用できる
  • ルールが短くて済む

デメリット

  • Adminでしか登録できない。(通常SDKでは操作不能)
  • 自分の持っているClaim一覧を通常SDKでは取れない

権限管理用Collection+exists

メリット

  • 細かい制御が可能
  • 通常SDKでもルール次第で操作可能

デメリット

  • storageのルールでは使えない

推奨したい方法

面倒だけれども、両方使ってしまえばいいとこどりが可能。

  • カスタムクレームで済むものはカスタムクレームで済ます
  • FireStore上にはクレーム一覧用のテーブルを読み取り専用で持っておく
  • クレーム一覧テーブルの更新をトリガーとしてCloudFunctionを設定してカスタムクレームとの同期をとる
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?