新しいユーザーがサインアップできないように、ユーザーがFirebaseのメール/パスワードアカウントを登録するのを制限する方法はありますか?数人の管理者だけがアクセスできる小さなアプリ(Firebase管理者で手動で作成したもの)があり、現在のセットアップ方法では、誰でも小さなJavaScriptを挿入してアカウントを登録できるようです。
Firebase Simple Loginは、便宜上、 Firebase Custom Login の上に構築された抽象化です。電子メール/パスワード認証を使用する場合、これは単にその電子メールとパスワードの間のマッピングを作成し、セキュリティルールで使用するための認証トークンを自動的に生成することを覚えておく価値があります。
特定のケースでは、すべての「admin」ユーザーがすでに作成されている場合、セキュリティルールを通じて目的の動作を実現できます。たとえば、Firebaseデータツリーへの読み取り/書き込みアクセスをそのリスト内の認証済みユーザーにのみ許可する場合は、そのユーザーが「管理者」リストに含まれていることを要求するトップレベルの読み取り/書き込みセキュリティルールを作成してみてください。
_{
".read" : "auth != null && root.child('admins').hasChild(auth.uid)",
".write" : "auth != null && root.child('admins').hasChild(auth.uid)"
}
_
上記のルールにより、ユーザーは(_auth != null
_を介して)認証され、認証されたユーザーのIDが管理者のリスト(root.child('admins').hasChild(auth.uid)
)に含まれている必要があります。
最後のステップは、ユーザーをadmins
サブツリーに書き込むことにより、実際にそれらのユーザーを管理者にすることです。管理者を作成するユーザー1、4、および7がいるとしましょう。データツリーを更新して、以下を反映させます。
_{
...
"admins": {
"1": true,
"4": true,
"7": true
}
}
_
この結果、他のユーザーがFirebase Simple Loginを使用して新しいメール/パスワードのマッピングを生成できる場合でも、セキュリティルールを使用して制限されているため、これらのマッピングはアプリケーションに影響を与えません。
登録時に新規ユーザーを削除するクラウド機能を追加することで、新規ユーザー登録をオフにすることもできます。この答えを参照してください: