2009-08-22 3 views
1

Kennen Sie Entwurfsmuster zum Implementieren einer CRUD-Level-Sperre für Objekte, dh für eine Instanz eines Objekts sollte ich unterschiedliche Zugriffskontrolllevel für jedes Objekt festlegen können die Operationen (Erstellen, Lesen, Aktualisieren, Löschen). Zum Beispiel kann Person A Objekt Z lesen und aktualisieren, aber nicht löschen. Person B kann Objekte X, Y und Z lesen, aktualisieren und löschen.CRUD-Level-Sperre für Objekte - Entwurfsmuster

Meine Sorge ist, was passiert, wenn große Datenmengen vorhanden sind. Mit anderen Worten, ich suche nach etwas effizientem.

Ich habe diese Art von Zugriffskontrolle für Objekte einmal implementiert und ich weiß, wie es gemacht werden kann, ich frage mich nur, ob es tatsächlich eine Art von Design-Muster dafür gibt.

Antwort

1

Es gibt eine ganze Reihe von Informationen zur Verfügung. This ist ein vernünftiger Ausgangspunkt. Für große Datenmengen kann es schwer sein, Dinge effizient zu machen - um die Leistung zur Laufzeit zu maximieren, bedeutet das, dass während des Entwurfs mehr Entwicklerzeit aufgewendet wird. Es gibt leider keine Silberkugel.

Ein Beispiel für eine gute Kontrolle auf Objektebene findet sich in Lotus Notes, die einen feingranularen Zugriff auf Objekte in der von Ihnen beschriebenen Weise bietet. (Notizen ist nicht für seine hervorragende Leistung bekannt, aber ist ziemlich sicher, wie solche Systeme gehen.)

0

Ich sehe dies als einen Sonderfall der Autorisierung eines "Service".

Es erfordert, dass Sie eine Möglichkeit haben, die Anmeldeinformationen des Aufrufers zu kennen. Wenn Sie vermeiden möchten, dass solche Informationen explizit auf jede Methode übertragen werden, benötigen Sie einen impliziten "Kontext", der verfügbar ist, wenn die Autorisierung bestimmt wird. Die Verwaltung solcher Funktionen auf Einzelpersonsebene neigt dazu, sehr unweigerlich zu werden, so dass Sie eher rollenbasierte Zugriffskontrolle und die Zuweisung von Benutzergruppen zu Rollen benötigen.

All dies bedeutet nicht so sehr ein Designmuster als ein zu nutzendes Framework. Frameworks wie Spring und Java EE verfügen über solche integrierten Funktionen, die wiederum Verzeichnisse mit LDAP ausnutzen können.

Also mein "Muster" ist nicht das Rad neu zu erfinden, einen geeigneten Rahmen zu finden und es zu benutzen.

Verwandte Themen