2017-10-06 98 views
0

如果我理解正確[1],那麼在Firebase中無法限制用戶對其擁有的數據的訪問權限,也無法隱藏敏感列。這在新發布的Firestore中是否更好?它有解決方法嗎?Firestore:使用安全規則限制子/字段訪問

我能想到的一種選擇是通過雲端功能路由這些請求,以便根據需要進行過濾,而不是直接訪問。這可能會工作嗎?

[1] Restricting child/field access with security rules

+1

在Firebase中,您可以限制用戶的寫入和讀取操作,僅限於他們的uid或任何其他可能需要的條件,例如他們的uid中的字符串值可以讓他們看到不同的節點。 – Torewin

+1

我這麼認爲,但我還沒有嘗試過。請參閱https://firebase.google.com/docs/firestore/security/secure-data#shallow_queries –

回答

2

公司的FireStore(和火力地堡)真的不做出關於誰 「擁有」 數據的差別。你可以制定規則來實施所有權政策,但沒有任何固有的東西可以強制這種情況發生。

Firestore規則適用於整個文檔,因此您無法隱藏敏感列。一個典型的解決方案是在一個文檔中公開字段,在一秒鐘內公開字段。你可以然後write rules to enforce different access to the separate documents

在編寫這樣的多個文檔時,您有幾個選項。一種方法是將整個記錄寫入私人部分,並有一個函數過濾器並寫入公共部分。這樣做的不利之處在於,當您編寫私人部分和您可以看到更新的公共部分之間存在延遲。

另一種方法是使用寫入批次以原子方式寫入兩個文檔。與需要您在線的全面事務處理不同,寫入批處理可以在脫機時使用,並且適用於需要對兩個或更多文檔進行原子更改但您不希望其他任何寫入爭用的情況。用戶更新他們自己的配置文件將是寫批處理非常好的情況的一個很好的例子。

+0

@Torewin的鏈接通過回答關於單個文檔級訪問的子問題來補充此問題。謝謝! – Tycho