如何解决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自定义声明是否可以进行这种访问控制?如果可以,我该如何实现呢?
在这里,我的最终目标是为用户Joins>根据其组分配自定义声明>仅能够访问该组(或节点)中的数据。
非常感谢。
解决方法
您将要使用方括号表示法:
{
"rules": {
"c" :{
"$comp_id" : {
"$uid": {
".read" :"auth.uid == $uid && auth.token[$comp_id] === true",".write": "auth.uid == $uid"
}
}
}
}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。