我仅在我的应用程序中使用Firebase-身份验证,Firestore,功能和存储。
在Firestore中,我的数据结构如下:
/users/<user_id>/<user_data>
/listings/<listing_id>/<listing_data>
<listing_data>
包含一个user_id
字段。
在存储中,我的数据结构如下:
/images/<user_id>/<image_id>/<images>
我有以下情况:
<user_data>
中的名字我不知道该如何处理。目前,任何人都可以通过身份验证访问任何内容,因此我想第一步是将其锁定,然后再分配权限?
我曾考虑过要添加一个访问列表对象,然后编写中间件来检查它,但是感觉不正确
答案 0 :(得分:1)
您必须将firestore的规则修改为:
service cloud.firestore {
match /databases/{database}/documents {
// Restaurants:
// - Authenticated user can read
// - Authenticated user can create/update (for demo)
// - Validate updates
// - Deletes are not allowed
match /restaurants/{restaurantId} {
allow read, create: if request.auth.uid != null;
allow update: if request.auth.uid != null
&& request.resource.data.name == resource.data.name
allow delete: if false;
// Ratings:
// - Authenticated user can read
// - Authenticated user can create if userId matches
// - Deletes and updates are not allowed
match /ratings/{ratingId} {
allow read: if request.auth.uid != null;
allow create: if request.auth.uid != null
&& request.resource.data.userId == request.auth.uid;
allow update, delete: if false;
}
}
}
}
我数据库的根是餐厅。您必须将这些参数替换为您的参数。