Wie können geheime Attribute in Firebase herausgefiltert/versteckt werden?So können Sie Attribute in Firebase filtern/verbergen
Zum Beispiel, wenn ich einen Datenspeicher habe:
"people": {
"ivan": {
"age": 23,
"location": "Australia"
"password": "123",
"underGroundLover": "JLo"
}
}
I password
und underGroundLover
von allgemeinem Publikum verbergen will, während sie in der Lage sind ivan
zu holen Knoten.
Von meinem Verständnis, Firebase der Zulassung/Sicherheitsregel/Knoten Abrufen Logik ist einfach „alles oder nichts“, so dass, wenn ich einige geheimen Eigenschaften von einem Knoten herausfiltern mag, muß ich entweder:
Verwenden Sie meinen eigenen Server/Lambda, um Geheimnisse herauszufiltern, bevor Sie Daten an Benutzer weitergeben. Was den Zweck von BAAS vereitelt.
Verwenden Sie eine seltsame denormalisierte Datenstruktur, um öffentlich zugängliche und für Berechtigungen erforderliche Attribute zu trennen. Das führt zu einer großen Anzahl von n + 1 Anfragen.
{ "rules": { "public": { "people": { ".read": true, "ivan": { "age": 23, "location": "Australia" "passwordRef": "/non-public/people/ivan/password", "underGroundLoverRef": "/non-public/people/ivan/underGroundLover" } } }, "nonPublic": { "people": { ".read": false, "ivan": { ".read": false, "password": { ".read": if(user === "ivan" || user.group = "admin" || user.group === "ivan's parent") }, "underGroundLover": { ".read": if(user !== "ivan's wife") } } } } } }
Gibt es eine andere effizientere Art und Weise, die ich umsetzen kann:
denormalised Datenstruktur der Option 2 mit Regeln wird in etwa so (ich weiß, Daten und Regeln nicht zusammen leben) sein Filter? Wenn Firebase mir antworten kann, möchte ich auch wissen, warum die Sicherheitsregel oder der Datenabruf alles oder nichts sein müssen? Wäre es nicht schön, wenn Firebase die Datenbank nach Regeln filtern/verstecken könnte?
Sie können Teile eines Knotens nicht ausblenden. Ein gesamter Knoten ist entweder für einen Benutzer lesbar oder nicht. Wir können zustimmen, dass es nett wäre, wenn Sie Teilknoten laden oder Sicherheitsregeln zum Filtern von Daten verwenden würden. Aber am Ende zählt, wie es funktioniert: Eine Leseoperation kann nie eine Teilmenge des gelesenen Standorts basierend auf Sicherheitsregeln zurückgeben. –
Ummm ich sehe. Sieht so aus, als ob dies der Deal-Breaker für uns wäre, Firebase in der Produktion zu verwenden ... –
In der NoSQL-Datenbank ist es üblich, Ihre Daten zu modellieren/duplizieren, um sie Ihren Anwendungsfällen anzupassen. Der Grund, warum viele Entwickler unglaubliche Skalierbarkeit mit NoSQL-Lösungen erreichen, besteht darin, dass sie diese Konzepte annehmen und in ihnen arbeiten, um ihre Anforderungen zu erfüllen. Um mit diesem Ansatz vertrauter zu werden, empfehle ich dringend, [NoSQL-Datenmodellierung] (https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) zu lesen. –