繁体   English   中英

Firebase 数据库安全规则 - 根据动态 CustomClaim 名称设置访问权限

[英]Firebase Database Security rules - set access based on dynamic CustomClaim name

所以我已经设法根据他们所属的组使用下面的 Node.js 代码为每个用户分配自定义声明:

exports.giveToken = functions.database.ref("userSearch/{Id}").onCreate((snapshot,context)=>{
 if(snapshot.child("cId").exists()){
   const group = snapshot.child("cId").val();
   const userId = context.params.Id;
    return admin.auth().setCustomUserClaims(userId, {[group]: true});
 }else{
   return null;
 }

})

如您所见,companyId / customClaim 名称是动态设置的,即可以是 1234 也可以是 123456

在 Firebase 的数据库安全规则中,这是我的规则:

{
  "rules": {
        "c" :{
        "$comp_id" : {
              "$uid": {
              ".read" :"auth.uid == $uid && auth.token.$comp_id === true",
              ".write": "auth.uid == $uid"
              }
        }
     
      }
}}

问题实际上是双重的,这种类型的访问控制是否可以通过 Firebase 自定义声明实现?如果可以,我该如何实现?

我在这里的最终目标是用户加入>根据他们的组分配自定义声明>只能访问来自该组(或节点)的数据。

提前谢谢了。

您需要使用方括号表示法:

{
  "rules": {
        "c" :{
        "$comp_id" : {
              "$uid": {
              ".read" :"auth.uid == $uid && auth.token[$comp_id] === true",
              ".write": "auth.uid == $uid"
              }
        }
     
      }
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM