管理团队权限并允许同一团队的两个用户访问节点 [英] Managing team permissions and allowing two users from the same team to access a node

查看:21
本文介绍了管理团队权限并允许同一团队的两个用户访问节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我允许使用Google登录我的Firebase Web应用程序。 我通过Auth.uid控制对数据库的访问:

 {
  "rules": {
     "users": {
        "$uid": {          
          ".read": "auth.uid === $uid",
          ".write":"auth.uid !== null",
             "images": {
                ".read": "auth.uid === $uid",
                ".write":"auth.uid === $uid",
      },
 ...

我希望使用户团队中的其他用户能够访问他/她的图像。我翻阅了文件,但找不到一种方法来实现这一点。有什么想法吗?

推荐答案

安全规则能够从其他密钥读取数据,因此可以基于密钥(即团队成员)的存在构建规则。

以下是我用于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的信息。

这篇关于管理团队权限并允许同一团队的两个用户访问节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆