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

所以我已经设法根据他们所属的组使用下面的 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 Custom Claims 实现?如果可以,我该如何实现它?


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


提前谢谢了。


开满天机
浏览 89回答 1
1回答

九州编程

您需要使用方括号表示法:{  "rules": {        "c" :{        "$comp_id" : {              "$uid": {              ".read" :"auth.uid == $uid && auth.token[$comp_id] === true",              ".write": "auth.uid == $uid"              }        }           }}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript