[英]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.