所以我已经设法根据他们所属的组使用下面的 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 实现?如果可以,我该如何实现它?我在这里的最终目标是用户加入>根据他们的组分配自定义声明>只能访问来自该组(或节点)的数据。提前谢谢了。
1 回答
九州编程
TA贡献1785条经验 获得超4个赞
您需要使用方括号表示法:
{
"rules": {
"c" :{
"$comp_id" : {
"$uid": {
".read" :"auth.uid == $uid && auth.token[$comp_id] === true",
".write": "auth.uid == $uid"
}
}
}
}}
添加回答
举报
0/150
提交
取消