在Firebase存儲安全規則(而不是實時數據庫)中,有沒有其他方法可以執行檢查:路徑中是否存在其他對象,或存在其他對象的元數據?Firebase存儲安全規則:檢查另一個對象是否存在/檢查對象的元數據
一些背景
目前我儲存安全規則設置,使用戶只具有讀取訪問權限,並沒有寫訪問他們/users/{userId}/
路徑。
我有一個管理雲功能,將文件保存到/users/{userId}/necessary-file.pdf
。而且我不希望用戶能夠修改或編寫此文件,只有雲功能纔有權執行此操作。要做到這一點,我想我可以匹配類似的文件名:
match /users/{userId}/{fileName} {
allow write: if !fileName.matches("necessary-file.pdf")
}
問題
有什麼辦法,我只能讓用戶寫一些,其他-file.pdf如果他們在相同的路徑上已經有necessary-file.pdf(或者甚至在其他地方,如果該效果更好)。雖然仍然禁止他們寫necessary-file.pdf。
那麼,有什麼辦法讓我做這樣的僞代碼嗎? :
match /users/{userId}/{fileName} {
allow read: if request.auth.uid == userId;
allow write: if (!fileName.matches("necessary-file.pdf")) && ("necessary-file.pdf".exists())
}
作爲替代方案,我可以有我的雲功能,寫一個元數據必要-file.pdf並檢查太多。有什麼辦法可以執行像這樣的僞代碼嗎? :
allow write: if "necessary-file.pdf".metadata['canUserWrite'] == 'yesUserCan'
最後
什麼是真正酷的這是,如果這是在任何遠程可能的,它可以用來火力數據庫,並在一個火力點存儲規則之間進行通信不那麼實時的方式。 (referring to this question here)雲端功能可偵聽實時數據庫中預期字段的更改,並將文件寫入Firebase存儲,Firebase存儲可檢查該文件。
完美感!那麼我會做更多的思考。非常感謝7月4日的快速回復和祝福! – johnozbay