无需使用自定义授权即可创建对firebase存储的组访问权限

有没有办法按组控制上传到Firebase存储中的路径?
例如,有一个可以在任何地方上传的管理员组或一个只能上传到某个路径的团队.
最佳答案
经过一段时间的搜索后,我没有找到准备好的答案,所以我会发布到目前为止的内容.很高兴知道是否还有其他(更好)的方法.

由于我不想使用其他服务器,因此自定义身份验证令牌已经完成.但是,request.auth.uid可用于存储规则. uid属性与Auth区域中定义的用户之一匹配.您需要在存储规则中创建一个函数,以检查request.auth.uid是否在您定义的组中.

Firebase存储规则具有独特的语法.它看起来像javascript,但事实并非如此.您可以定义函数,但不能在其中声明var.此外,还有一些类似javascript的方法可用.

例如,我首先尝试了以下尝试失败:

function isAdmin() {
  return ["value","list"].indexOf(request.auth.uid) > -1;
}

service firebase.storage {...}

当我尝试定义var OR时,规则编辑器会抛出错误,当我使用.indexOf时,它总是返回“未授权”.

以下结果为我工作.

function isAdmin() {
  return request.auth.uid in {
    "yaddayadddayaddUserIDKey":"User Name1"
  };
}
function isSomeOtherGroup() {
  return request.auth.uid in {
    "yaddayaddaSomeOtherUID":"User Name2",
    "YaddBlahBlahUID":"User Name3"
  };
}

service firebase.storage {
  match /b/<your bucket here>/o {
    match /{allPaths=**} {
      allow read, write: if isAdmin();
    }
    match /path/{allPaths=**} {
        allow read, write: if isSomeOtherGroup() || isAdmin();
    }
  }
}

转载注明原文:无需使用自定义授权即可创建对firebase存储的组访问权限 - 代码日志