有沒有辦法根據組控制上傳到Firebase存儲中的路徑? 例如有一個管理員組可以上傳到任何地方或只能上傳到某個特定路徑的團隊。在不使用自定義授權的情況下創建對Firebase存儲的組訪問
回答
在搜索了一下後,我沒有找到現成的答案,所以我會發布我到目前爲止的內容。很高興知道是否有其他(更好)的方法來做到這一點。
由於我試圖不使用另一臺服務器,自定義身份驗證令牌不在。但是,存儲規則可以使用request.auth.uid。 uid屬性與Auth區域中定義的其中一個用戶相匹配。您需要在存儲規則中創建一個函數,檢查request.auth.uid是否在您定義的組中。
Firebase存儲規則具有唯一的語法。它看起來像JavaScript,但它不是。您可以定義函數,但不能在其中聲明一個var。此外,還有一些可用的類似於JavaScript的方法。
例如,我第一次沒有成功試過如下:
function isAdmin() {
return ["value","list"].indexOf(request.auth.uid) > -1;
}
service firebase.storage {...}
無論是規則編輯器扔的錯誤,當我試圖定義一個變種或當我使用.indexOf它總是返回「未經授權」。
以下結束爲我工作。
function isAdmin() {
return request.auth.uid in {
"yaddayadddayaddUserIDKey":"User Name1"
};
}
function isSomeOtherGroup() {
return request.auth.uid in {
"yaddayaddaSomeOtherUID":"User Name2",
"YaddBlahBlahUID":"User Name3"
};
}
service firebase.storage {
match /b/<your bucket here>/o {
match /{allPaths=**} {
allow read, write: if isAdmin();
}
match /path/{allPaths=**} {
allow read, write: if isSomeOtherGroup() || isAdmin();
}
}
}
我只是試過這個解決方案,但由於某種原因,它不工作。你在路上發現了什麼其他警告? –
我只使用電子郵件地址驗證。我沒有嘗試使用谷歌或臉書認證。 – ecalvo
我沒有足夠的聲望評論@ ecalvo的答案。所以我添加了一個答案。該功能isAdmin()
可以提供一個名單如下:
function isAdmin() {
return request.auth !=null && request.auth.uid in [
"uidAdmin1",
"uidAdmin2",
"uidOfOtherAdminsAsCommaSeparatedStrings"
];
}
休息的實施可以從@ecalvo的答案借用。我感覺現在更清楚了。在@ecalvo的回答中,我很困惑,爲什麼當我只需要比較uid時,我應該給用戶名呢?
- 1. 如何在不存儲上下文的情況下創建自定義的NSManagedObject?
- 2. 在不創建新類的情況下訪問自定義UITableViewCell中的UITextField?
- 3. 允許在沒有授權的情況下訪問單個API?
- 4. 如何爲以下情況實現自定義授權屬性?
- 5. 授予對一組用戶訪問Firebase位置的權限
- 6. 在不使用樣式的情況下在Silverlight中創建自定義按鈕
- 7. 如何在不使用Membership的情況下在asp.net MVC 3中使用自定義授權和身份驗證?
- 8. 在不詢問用戶名/密碼的情況下授權用戶使用oneDrive
- 9. 在訪問多維數據集時使用自定義授權
- 10. S3 - 授予訪問權限以創建存儲區
- 11. MVC自定義組授權
- 12. 在沒有註冊的情況下創建自定義文化
- 13. 在沒有筆尖的情況下創建自定義NSViewController
- 14. 在不使用@ViewChild註釋的情況下訪問組件
- 15. 在不使用foreach的情況下在數組中創建鍵?
- 16. 在沒有MVC的情況下針對數據庫構建ASP.Net自定義授權
- 17. Firebase未經授權的訪問
- 18. 如何在不顯示授權對話框的情況下授權Facebook應用程序的基本權限
- 19. 如何在不使用Shadow DOM的情況下創建組件?
- 20. 在不使用SQL的情況下創建用戶定義的聚合CLR
- 21. 如何在不使用String的情況下創建JSON對象?
- 22. Firebase存儲:使用http url路徑和自定義訪問令牌下載訪問受保護的圖像
- 23. 委託正在發佈的情況下自定義查看使用XIB創建
- 24. 在沒有自己的存儲庫的情況下使用Maven
- 25. 如何在不使用界面構建器的情況下創建自己的自定義按鈕?
- 26. 使用WEB API的自定義授權
- 27. 在不創建對象的情況下訪問非靜態字段
- 28. 授權請求源不限制Firebase中的域訪問權限?
- 29. 如何在沒有CentOS設置帳戶的情況下授予訪問權限
- 30. 如何在沒有SuperSU的情況下授予root訪問權限
相關討論:[保護用戶數據指南](https://firebase.google.com/docs/storage/security/user-security)(提及組方法),[用戶組,驗證聲明和自定義令牌] (https://groups.google.com/forum/#!searchin/firebase-talk/groups$20auth$20claims%7Csort:relevance/firebase-talk/77i9CRlwg88/iQsE78CbGQAJ)小組討論。 – Kato