Jac*_*own 4 firebase angular google-cloud-firestore
我是一名学生开发人员,在我的角度应用程序中尝试使用新的Firestore,并且坚持使用安全规则.
我想要实现的目标:
使用模板绑定在角度视图中显示firestore文档.该文档应该可以查看未经过身份验证的用户.
问题:
如果未经过身份验证的用户尝试查看页面,则会发生权限错误:
错误错误:权限丢失或不足.在新的FirestoreError(error.js:164)
模板文件:
<p>{{ (item | async)?.name }}</p>
Run Code Online (Sandbox Code Playgroud)
component.ts文件:
interface Profile {
name: string;
}
...
private itemDoc: AngularFirestoreDocument<Profile>;
item: Observable<Profile>;
...
ngOnInit() {
this.itemDoc = this.afs.doc<Profile>('profiles/0mlC8uWaKeArzk0sfIfX');
this.item = this.itemDoc.valueChanges();
}
Run Code Online (Sandbox Code Playgroud)
火库规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所知,访问您的Cloud Firestore数据由安全规则控制.当您收到"权限不足错误"时,表示您的读取或写入已被规则拒绝.
在您的情况下,您有这些规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
大致翻译成英文,这些说"只要用户登录就允许读取或写入数据库中的任何文档".
因此,如果您收到错误,则表示用户未登录(request.auth == null).
所以你有两个选择:
选项1:将Auth添加到您的应用程序中
您可以将Firebase身份验证添加到您的应用中.满足您规则的最简单的事情是匿名身份验证:
firebase.auth().signInAnonymously()
.then(function() {
// You're signed in, reads will work
})
.catch(function(error) {
// Handle Errors here.
// ...
});
Run Code Online (Sandbox Code Playgroud)
选项2:更改您的安全规则
如果您希望所有用户都能够阅读应用中的所有数据,则可以按如下方式打开规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2061 次 |
| 最近记录: |