2016-06-19 1 views
2

私は自分のアプリにFirebaseを使用していて、特定のユーザーをブロックする方法が不思議でした。コンソールの[認証]タブに「削除」と「無効化」オプションが表示されています。それらは何をするのですか?私はそれについての文書を見つけることができませんでした。そのうちの1つでユーザーをブロックできますか?Firebaseでどのようにユーザーをブロックしますか?

は、私は、ユーザーをブロックすることによって意味することは

+0

のようなものを呼び出すことができ@PhilipSopherねえ、私の答えは明確ではなかったか、あなたはまだ他の懸念を持っているなら、私に知らせてください。ありがとう! – adolfosrs

+0

@adolfosrs答えをありがとう。私は2つの質問があります: 1) 'blockedUsers'ノードはどのように見えますか?それは配列、辞書などですか?コード例を提供できますか? 2)**無効**機能は、現在ログインしているユーザーの認証を解除しますか? –

+1

**最初の質問**に関する追加情報で回答を更新しました。 **第2の質問**については、実装上でユーザーを常に再認証しているかどうかによって異なります。あなたがカバーしたい重要なイベントがある場合は、それを処理するために 'reauthenticate'することができます。さもなければ、あなたは未認証がありません。 – adolfosrs

答えて

10

無効機能が認証することをユーザーに防止することで構成されたデータベース上のデータにアクセスしてから彼を防ぐために".read": "auth != null"ルールです。したがって、認証しようとすると、エラーコードINVALID_CREDENTIALSで失敗し、彼は".read": "auth != null"ルールを持つデータにアクセスできなくなります。彼は削除されたように機能しますが、管理者は引き続きユーザーアカウントを再度アクティブにする権限を持ちます。

あなたが認証できるになりますが、アクセスを制限しているだろう「ブロックされたユーザー」のリストを作成したい場合は、/databaseRoot/blockedUsersのようなあなたのfirebaseデータベース上のノードでブロックされたIDを格納し、で作業することができますsecurity and rules

".read": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)" 

blockedUsersは、ツリー怒鳴るようになります。しかし、あなたはまた、このユーザーがブロックされた日付とユーザーIDのもとで他のいくつかの情報を追加することができます。

/databaseRoot 
    /blockedUsers 
     userId1 : true 
     userId2 : true 

このリストにユーザーを追加するかどうかは、必要に応じて異なります。 firebaseコンソールにアクセスし、ユーザIDをノードに追加することで手動で行うことができます。あなたがアプリケーションのイベントに基づいてユーザをブロックしたい場合は、あなたは、単に

ref.child('blockedUsers').child(userIdToBlock).set(true); 
+0

私は似たようなものを探しています。ユーザーに自分のアプリケーションを認証させることさえできないようにしたい。だから、私はユーザーの "ホワイトリスト"を持ち、他のすべてのユーザーはアプリケーションにアクセスできないようにしたいと考えています。これどうやってするの? – Sandra

関連する問題