2016-12-06 6 views
0
root: { 
    dir: { 
    subDir: { 
     subSubDir: { 
     ... 
     }, 
     ... 
    }, 
    subDir_2: { 
     ... 
    } 
    }, 
    dir_2: { 
    ... 
    }, 
    ... 
} 

Nehmen wir an, ein Benutzer möchte den Zugriff auf subDir und alle Inhalte beschränken. Jetzt versucht ein anderer Benutzer auf subSubDir zuzugreifen. Ich nehme an, all dies sollte mit benutzerdefinierter Logik geschehen: Ich werde eine neue Eigenschaft in den eingeschränkten Knoten einfügen, etwa access: 'noOne'.Geschachtelte Zugriffsrechte in MongoDB

Also, wie die Abfrage Logik für die anotherUser wird aussehen? etwas wie "Überprüfen der Anwesenheit von access Eigenschaft in jedem parentalen Knoten"? Das sieht nicht gut aus, besonders wenn es 10 oder mehr Verschachtelungsebenen gibt. Das Hinzufügen der access-Eigenschaft zu jedem Kind sieht sogar noch schlimmer aus, da sich dort möglicherweise Hunderte von Tausenden von Knoten befinden.

Was ist der richtige Weg, dies mit MongoDB zu implementieren?

Antwort

0

A MongoDB Lösung aus der Box wäre $redact benutzen Sie erhalten die Daten auf den Feldern beschränken kann auf dem Dokument gespeichert basiert. So können Sie den Zugriff steuern, indem Sie die Zugriffsfelder auf verschiedenen Dokumentebenen vergleichen.

Sie können den Benutzer so modellieren, dass er alle Zugriffsebenen enthält, oder er kann sie in einem Paar von Zugriffsebenen und Dokumentebenen enthalten.

Wenn der Benutzer ein bestimmtes Dokument anfordert, können Sie die Ebenen für das Dokument mit dem Benutzerzugriff auf dieser Dokumentebene vergleichen.

Verwandte Themen