2017-10-05 3 views
1

私は、私の角型アプリで新しいFirestoreを試してみて、セキュリティルールに固執した学生の開発者です。angular + firestore:文書への一般的な読み取りアクセスを許可する方法

私が達成しようとしている何を:

表示バインディングテンプレートを使用して、角度ビューのfirestoreドキュメント。そのドキュメントは認証されていないユーザーに対しても閲覧可能である必要があります。

問題:

非認証されたユーザーがページAの権限エラーを表示しようとした場合に発生します

ERROR Error: Missing or insufficient permissions. at new FirestoreError (error.js:164)

テンプレートファイル:

<p>{{ (item | async)?.name }}</p> 

コンポーネントを。 tsファイル:

firestoreルール:

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /{document=**} { 
     allow read, write: if request.auth != null; 
    } 
    } 
} 

答えて

4

ご存知のように、あなたのクラウドFirestoreデータへのアクセスがSecurity Rulesによって制御されます。 「不十分なアクセス許可エラー」が発生すると、読み取りまたは書き込みがルールによって拒否されたことを意味します。英語にほぼ翻訳

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /{document=**} { 
     allow read, write: if request.auth != null; 
    } 
    } 
} 

が、これらは「読書やユーザーが署名されている限り、データベース内の任意のドキュメントへの書き込みを許可する」と言う:あなたのケースでは

あなたはこれらのルールを持っています。

エラーが発生した場合は、ユーザーがログインしていないことを示します(request.auth == null)。あなたは、あなたのアプリにFirebase Authenticationを追加することができますあなたのApp

に認証を追加します。

オプション1:

は、だから、2つのオプションがあります。あなたのルールを満足させる最も簡単な方法は、匿名認証のようになります。

firebase.auth().signInAnonymously() 
.then(function() { 
    // You're signed in, reads will work 
}) 
.catch(function(error) { 
    // Handle Errors here. 
    // ... 
}); 

オプション2:あなたは、すべてのユーザーがアプリ内のすべてのデータを読むことができるようにしたい場合は

セキュリティルールを変更します次のようにルールを開くことができます:

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /{document=**} { 
     allow read: if true; 
     allow write: if request.auth != null; 
     } 
    } 
} 
+0

ありがとう!私は正しいルールを読んでいなかった –

0
service cloud.firestore { 
    match /databases/{database}/documents { 
    match /{document=**} { 
     allow read; 
     allow write: if request.auth != null; 
     } 
    } 
} 
関連する問題