我正在盡我最大的努力在我的應用程式中設定一個功能,允許知道組登錄名和密碼的人加入它。
每個組在“Groups”集合中都有一個檔案,每個用戶在“Users”集合中都有一個檔案。
為了保留 id 和密碼資訊,我有另一個名為“AuthGroups”的集合,包含與組一樣多的檔案,有兩個欄位:“login”和“password”。每個 auth 檔案與 Groups 集合中的相應檔案具有相同的 ID。
所以,這是我的策略:當用戶驗證登錄名和密碼時,第一個查詢被發送到資料庫,以在“AuthGroups”集合中找到具有這些憑據的檔案。如果找到檔案,則使用其 ID 在“Groups”集合中執行另一個查詢以檢索該組的資料。
查詢可能如下所示:
var ID = await firestore.collection('AuthGroups')
.where('login', isEqualTo: login)
.where('password', isEqualTo: password)
.get()
.then((value) {
return value.docs.first.id;
});
var groupName = await firestore.collection('Groups')
.doc(id)
.get()
.then((value) {
return value.get('name');
});
現在,讓我們談談確保其安全的 Firestore 規則......以防止惡意人員查看我的“AuthGroup”集合中的所有檔案。我告訴自己,我的規則只需要允許同時包含“登錄”和“密碼”欄位的查詢。但我不知道如何正確地做到這一點,如果它甚至可能......“組”集合中的檔案也是如此:用戶只有在知道檔案 ID 的情況下才能獲取檔案。
一個解決方案可能是在我的“AuthGroup”集合中命名我的檔案,如“登錄名 密碼”,并將組的 ID 存盤在其中。在我的規則中,只允許這樣的串列請求:
service cloud.firestore {
match /databases/{database}/documents {
match /AuthGroup/{organization} {
allow list: if request.auth != null;
}
}
}
uj5u.com熱心網友回復:
我告訴自己,我的規則只需要允許同時包含“登錄”和“密碼”欄位的查詢。但我不知道如何正確地做到這一點,甚至可能。
這是不可能的。 您無法檢查安全規則中的特定查詢引數。
一個解決方案可能是在我的“AuthGroup”集合中命名我的檔案,如“登錄名 密碼”,并將組的 ID 存盤在其中。在我的規則中,只允許這樣的串列請求
是的,這是一個可能的解決方案。或者您可以散列連接的登錄名和密碼字串,這樣您就不會在檔案 ID 中公開它們或超過該 ID 的最大長度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/428766.html
標籤:火力基地 扑 镖 谷歌云火库 firebase-安全
下一篇:Firebase函式偶爾更新檔案
