【发布时间】:2022-01-15 18:15:13
【问题描述】:
我有一个 Firebase 数据库,我希望只允许有权访问该应用程序的用户读取和写入。
我的数据结构是这样的:
{
"applications": {
"id_1": {
"feature": {
"a": true,
"b": false
},
"users": {
"user_id_1": true,
"user_id_2": true
}
}
}
}
如您所见,每个应用程序都可以有许多具有读/写权限的用户。
我只希望users 对象中的用户能够检索该应用程序。
我有这样的规则:
{
"rules": {
"applications": {
".read": "auth != null",
".write": "auth != null",
"$appId": {
".write": "data.child('users').child(auth.uid).val() === true",
".read": "data.child('users').child(auth.uid).val() === true"
}
}
}
}
".read": "auth != null", 允许任何已登录的用户检索所有应用程序。我只希望用户 user_id_1 或 user_id_2 能够读取该应用程序。
在伪代码中,我会这样做:
{
"rules": {
"applications": {
".read": "only users in `root.applications.$appId.users` can read", // I need to replace `$appId` some how
".write": "auth != null",
"$appId": {
".write": "data.child('users').child(auth.uid).val() === true",
".read": "data.child('users').child(auth.uid).val() === true"
}
}
}
}
我该如何限制它,以便当用户 user_id_1 获取他们的应用程序时,他们只能看到他们有权访问的应用程序?
【问题讨论】:
-
Firebase 实时数据库和 Cloud Firestore 是两个独立的数据库。请仅使用相关标签标记您的问题,不要同时使用两者。
标签: firebase firebase-realtime-database firebase-authentication firebase-security