可以使用 Firebase 权限仅公开 Firebase 数据库中对象的某些字段以进行读取访问吗?
Possible to expose only certain fields of an object in the Firebase DB for read access using Firebase permissions?
让我们考虑可以表示 Firebase 数据库的 JSON 对象文字的以下结构:
{
"users": {
"user0": {
"name": "Mike",
"age": 20,
"relationship": "married",
"friends": [...]
},
"user1": {
"name": "Sarah",
"age": 20,
"relationship": "single",
"friends": [...]
},
...
}
}
使用 Firebase permission system,是否可以使 name
和 age
对 每个人 可读(通过将相应的权限设置为 true
) 但 relationship
状态只对更细粒度的观众可见,例如用户 friends
.
我要如何编写 security-rules.json
才能实现此目的?
就个人而言,对于您希望所有用户阅读的数据和您只希望部分用户阅读的数据,我会有不同的路径。这现在看起来可能很痛苦,但是在您继续开发应用程序的过程中,您很有可能会添加或更改用户的属性。每次执行此操作时,您都必须添加到数据库安全规则中。
也就是说,如果您仍想使用数据库安全规则来处理权限,您可以为每个要保护的路径编写规则。例如:
"rules": {
"users": {
"$user": {
"relationship": {
".read": <some condition>
}
}
}
}
查看 the documentation 示例。
让我们考虑可以表示 Firebase 数据库的 JSON 对象文字的以下结构:
{
"users": {
"user0": {
"name": "Mike",
"age": 20,
"relationship": "married",
"friends": [...]
},
"user1": {
"name": "Sarah",
"age": 20,
"relationship": "single",
"friends": [...]
},
...
}
}
使用 Firebase permission system,是否可以使 name
和 age
对 每个人 可读(通过将相应的权限设置为 true
) 但 relationship
状态只对更细粒度的观众可见,例如用户 friends
.
我要如何编写 security-rules.json
才能实现此目的?
就个人而言,对于您希望所有用户阅读的数据和您只希望部分用户阅读的数据,我会有不同的路径。这现在看起来可能很痛苦,但是在您继续开发应用程序的过程中,您很有可能会添加或更改用户的属性。每次执行此操作时,您都必须添加到数据库安全规则中。
也就是说,如果您仍想使用数据库安全规则来处理权限,您可以为每个要保护的路径编写规则。例如:
"rules": {
"users": {
"$user": {
"relationship": {
".read": <some condition>
}
}
}
}
查看 the documentation 示例。