Repository-Muster und Schichtung. Wo bewerbe ich mich Sicherheit?

stimmen
10

Ich tue mein Bestes, um meinen Web-App mit guter Trennung zwischen den Schichten zu entwerfen. Ich bin mit dem Repository-Muster und als solche haben eine SQLObjectRepository, die durch meine ObjectService genannt wird, die durch meine Web-Frontend aufgerufen wird.

In meinem Objektmodell, wird der Benutzer mit einem oder mehreren Bereichen zugeordnet, die die Objekte auswählen, sollten sie Zugriff haben sollten. Meine Frage ist, wenn ich für Objekte bin abfragt, setze ich den Code im Dienst die Berechtigungen für die Objekte zu setzen, oder sollte im Repository, dass Code sein? Wenn der Benutzer ein Mitglied von zwei Regionen, sollte passiere ich den Benutzer als Parameter für den Dienst, oder sollte ich den Regionen der Benutzer weitergeben an den Service?

Veröffentlicht am 09/12/2008 um 19:49
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

Ich würde:

  • Schreiben Sie die Sicherheitsüberprüfung in einer Weise, dass es in jedem Ort angewendet werden, die Sie mögen. Auf diese Weise können Sie Refactoring als Anforderungen ändern.

  • Wenn die Sicherheitsüberprüfung wirklich wird immer Platz bewerben, es in der Repository - Schicht (oder besser gesagt, in einem Aspekt , wenn Ihre Sprache unterstützt wird ) , so dass mehrere Dienste werden alle teilen gemeinsame Sicherheit , wenn sie das gleiche Repository verwenden. Legen Sie es sonst in den Dienst (oder einen Aspekt auf den Dienst handelt).

  • passiert das gesamte Benutzerobjekt auf die Sicherheitsüberprüfung Mechanismus:

    • wenn die Sicherheitsüberprüfung wird später komplexere (abhängig von anderen Eigenschaften des Benutzers) die API wird sich nicht ändern;
    • es macht mehr semantischen Sinn - Sie überprüfen die Benutzerberechtigung etwas, das nicht eine Liste der Länder, tut zu tun hat.
Beantwortet am 09/12/2008 um 22:56
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more