所以我已经设法根据他们所属的组使用下面的 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 实现?如果可以,我该如何实现它?
我在这里的最终目标是用户加入>根据他们的组分配自定义声明>只能访问来自该组(或节点)的数据。
提前谢谢了。
九州编程
相关分类