簡體   English   中英

Firebase 數據庫安全規則 - 根據動態 CustomClaim 名稱設置訪問權限

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM