簡體   English   中英

Firebase-如何限制通過身份驗證的用戶對某些路徑的訪問?

[英]Firebase - how to restrict authenticated user's access to certain paths?

足夠簡單的問題:

我如何限制路徑,例如...

/orders/<userid>

/cart/<userid>

/transactions/<userid>/txid

...僅適用於其userid與路徑中的userid匹配的用戶?

我已經設置了身份驗證,並且需要在firebase.auth().onAuthStateChanged之后在Vue中訂閱其中的一些身份驗證

根據此處的文檔,似乎在以下規則示例中,用戶令牌必須與密鑰完全匹配:

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

這是否意味着/orders/123456/order123478將受到限制,僅對123456用戶可用?

對於實時數據庫,將規則更新為以下內容:

{
  "rules": {
    "orders": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
  }
}

$uid鍵表示嵌套在該級別的任何鍵,並允許您在規則中引用它。 auth變量由Firebase提供,包含有關發出請求的經過身份驗證的用戶的詳細信息,因此您可以將請求用戶的uid與數據庫的uid密鑰進行比較,並在匹配時授予權限(嵌套的".read"".write"值)。

因此,對於uiduser1 ,他們將有權訪問以下數據:

{
  "orders": {
    "user1": {
      "order1": read/write,
      "order2": read/write
    },
    "user2": {
      "order1": no access,
      "order2": no access
    },
    "user3": {
      "order1": no access,
      "order2": no access
    },
}

閱讀文檔,並試用Firebase儀表板“規則”部分中的模擬器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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