[英]How to get providers access tokens from Firebase authenticated user?
[英]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"
值)。
因此,對於uid
為user1
,他們將有權訪問以下數據:
{
"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.