Flutter & Firebase - FirebaseFirestoreException:如果我按照以下方式制定了 Firebase 规则,如何获得使用 Firestore 中所有数据的
Posted
技术标签:
【中文标题】Flutter & Firebase - FirebaseFirestoreException:如果我按照以下方式制定了 Firebase 规则,如何获得使用 Firestore 中所有数据的权限?【英文标题】:Flutter & Firebase - FirebaseFirestoreException : How do I get permission to use all data in my Firestore if I made firebase rule as follow? 【发布时间】:2021-01-10 12:25:45 【问题描述】:虽然用户已经登录,但该用户只能从 Firestore 中获取数据。而那个数据就是他自己的数据。这是为什么?那么如何从 Firestore 获取所有数据?
Firebase 规则
//A user can only read/write their own information
match /users/userId
allow read, write: if request.auth.uid == userId;
权限被拒绝控制台
W/Firestore(32060): (21.3.0) [Firestore]: Listen for Query(users order by __name__) failed: Statuscode=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null
I/System.out(32060): com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.
Firebase 代码
// All User Stream
List<AllUser> _userList(QuerySnapshot snapshot)
//print('in userList');
return snapshot.documents.map((doc)
//print('name : $doc.data['name']');
return AllUser(
name: doc.data['name'] ?? null,
email: doc.data['email'] ?? null,
uid: doc.data['uid'] ?? null,
signInMethod: doc.data['signInMethod'] ?? null,
locale: doc.data['locale'] ?? null,
score: '20000',
);
).toList();
Stream<List<AllUser>> get allUserData
//print('in allUserData');
return userCollection.snapshots().map(_userList);
请看一下我的代码。我期待着收到大家的来信。非常感谢。
【问题讨论】:
【参考方案1】:您的 Firestore 规则如说明只能允许用户修改拥有这些文档的文档。如果您想允许任何用户读取和写入数据库,请更改为:
match /users/userId
allow read, write: if request.auth.uid != null;
请注意,这会将您的数据库向公众开放,任何经过身份验证的用户都可以读写。让我知道这是否是你想要的。
【讨论】:
我认为还有另一种方法。我想我必须要求我的主管更改此规则以上是关于Flutter & Firebase - FirebaseFirestoreException:如果我按照以下方式制定了 Firebase 规则,如何获得使用 Firestore 中所有数据的的主要内容,如果未能解决你的问题,请参考以下文章
Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中
Flutter & firebase - StreamBuilder 未加载
Flutter 2 - firebase_remote_config 0.6.0 & firebase_core ^0.7.0 版本冲突
Flutter & Firebase - 从文档中获取特定字段
检查用户是不是登录 Flutter & firebase auth |
从 QuerySnapshot 和 Listview Builder (Flutter & Firebase) 中排除文档