我允许使用Google登录我的Firebase网络应用。 我通过auth.uid控制对数据库的访问:
{
"rules": {
"users": {
"$uid": {
".read": "auth.uid === $uid",
".write":"auth.uid !== null",
"images": {
".read": "auth.uid === $uid",
".write":"auth.uid === $uid",
},
...
我想让用户团队中的其他用户访问他/她的图片。我查看了文档,但找不到实现这一目标的方法。有什么想法吗?
答案 0 :(得分:2)
安全规则能够从其他密钥读取数据,因此可以构建基于密钥存在的规则(即团队成员资格)。
以下内容是我用于Firebase数据库的Bolt规则的一小部分:
path /teams/{$teamKey}/members/{$userId} is Boolean {
...
}
path /users/{$userId}/shares/{$teamKey} {
...
read() { root.teams[$teamKey].members[auth.uid] !== null }
}
JSON看起来像这样:
...
"users": {
"$userId": {
...
"shares": {
"$teamKey": {
...
".read": "root.child('teams').child($teamKey).child('members').child(auth.uid).val() != null",
...
希望这会有所帮助。基本上,团队有一个密钥,它包含用户ID(带有布尔值)。通过验证其成员资格(即,通过检查团队密钥下是否存在用户ID密钥),可以向其他团队成员授予对用户密钥下的共享信息的读取权限。实质上,您将驱动安全规则的数据存储在数据库本身中。
您不必使用Bolt,但我发现它比JSON表示更容易管理。 Bolt语言文档包含有关Bolt定义和JSON定义的RuleDataSnapshot Methods的信息。