3

我剛剛開始使用Firebase,並且能夠讀取/寫入/編輯/刪除數據庫。在我的應用程序中,我只向用戶顯示數據,如果他/她有權訪問它。存儲的Firebase安全規則

我通過創建用戶節點和另一個節點(稱爲服務)並引用該用戶子節點中的服務來實現這一點。

我以前從未使用過Firebase的安全規則,現在我想開始使用Firebase存儲進行映像。

我下面的教程和我的控制檯說,

權限被拒絕。無法通過訪問火力地堡控制檯存儲 標籤訪問桶.. 請啓用火力地堡存儲爲你的水桶,並確保你有足夠的 權限正確配置資源

在谷歌搜索,並就如何SO上搜索設置這些安全規則我不知道什麼是正確的答案。一些答案建議我在我的代碼中編寫方法來授予權限,但文檔建議我需要在Firebase的末尾執行此操作。

這是一個例子

// Grants a user access to a node matching their user ID 
service firebase.storage { 
    match /b/<your-firebase-storage-bucket>/o { 
    // Files look like: "user/<UID>/path/to/file.txt" 
    match /user/{userId}/{allPaths=**} { 
     allow read, write: if request.auth.uid == userId; 
    } 
    } 
} 

我不能讓人民感覺回答

贊一個從幾個月前

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

有人可以請的解釋目前的Firebase(和iOS Swift ..如果它很重要)如何使用戶1只能讀/寫他/她的數據/照片

回答

5

你需要一個相應的文件路徑結構:

例如,當您上載的文件存儲這樣的:

(root…) /user/uidxxx/myfile.jpg

其中「uidxxx」是在您的身份驗證定義的唯一的用戶ID數據庫。

然後你就可以編寫規則控制檯/存儲/規則選項卡上:

// Grants a user access to a node matching their user ID 
service firebase.storage { 
    match /b/<your-firebase-storage-bucket>/o { 
    // Files look like: "user/<UID>/path/to/file.txt" 
    match /user/{userId}/{allPaths=**} { 
     allow read, write: if request.auth.uid == userId; 
    } 
    } 
} 

{userId}是將由相應的「uidxxx」

+0

OK更換一個通配符,所以我的問題,然後我猜猜是...存儲和數據庫是分開的嗎?...所以我需要重新創建我的存儲結構 – RubberDucky4444

+0

是的,你可以根據需要定義文件結構,但技巧是匹配文件路徑和數據庫和安全信息(如userId或ie的一些文件夾名稱) – toofoo