0

すでにユーザーリストに電子メールアドレスが登録されている認証済みユーザーにのみ書き込み許可を許可したいとします。Firebase認証ルールでメールを確認する

{ 
    "users" : { 
    "-KeZg-MuD-4TEOiW9i0_" : { 
     "email" : "[email protected]" 
    } 
    } 
} 

私はこのようなルールを使用して試してみた:

"users": { 
    ".write" : "root.child('users/email').val() === auth.token.email" 
} 
"users": { 
    ".write" : "root.child('users.email').val() === auth.token.email" 
} 
"users": { 
    ".write" : "root.child('users.email').child(auth.token.email).exists()" 
} 
"users": { 
    ".write" : "root.child('users').child(auth.token.email).exists()" 
} 

をしかし無駄に

マイユーザーリストには、次のようになります。

firebase.database().ref('users').push({email: '[email protected]'}) 

上記の私のスニペットは[email protected]を使用している代わりに、実際のGoogleは、ユーザーの電子メールアドレスを認証しますが、実際のユーザーは、私の中に存在している:私はこのような新しいユーザーを追加しようとすると、私はまだ許可拒否エラーを取得しますユーザーdbリスト。

+0

あなたが期待したことをしなかったもののコード例を教えてもらえますか? –

+0

私が追加した例に似たユーザーを追加しています。私はその後、許可を拒否されたエラーを取得します。 – okwme

+0

あなたが共有したコードの多くを作ることはできません。あなたの実際のJSONを(あなたのルールが 'root'に対してチェックしているので)テキストとして共有できますか? [Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の「JSONの書き出し」をクリックすると表示されます –

答えて

2

共有したJSONにはパスがありません/users/emailしたがって、このルールはtrueになることはありません:あなたは、セキュリティルールに特定ののパスの下で検索することはできません

root.child('users/email').val() === auth.token.email 

。あなたは特定のキーの存在を確認することができます。 Firebase security rules to check unique value of a child #AskFirebaseFirebase android : make username uniqueまたはこの#AskFirebaseビデオの回答:https://youtu.be/66lDSYtyils?t=6m15sを参照してください。