Hintergrund Jedes Projekt hat ein Konto, mit dem es verknüpft ist. Jeder Benutzer kann die Berechtigung haben, auf null bis viele Konten zuzugreifen. Dies wiederum bedeutet, dass jeder Benutzer nur auf eine Untergruppe von Projekten basierend auf den Benutzerkontoberechtigungen zugreifen kann.Objektmodell Autorisierung - OO Design Frage
Das Benutzerobjekt wird geladen, wenn sich der Benutzer bei der Anwendung anmeldet, und die Kontoberechtigungen werden zu diesem Zeitpunkt ebenfalls geladen. Dieses Benutzerobjekt wird im Cache der Anwendung gespeichert. Projekte werden nach Bedarf geladen.
Frage Wie können Kontobeschränkungen am besten durchgesetzt werden? Wir möchten, dass es von der eigentlichen Präsentationslogik abstrahiert wird, aber wir denken nicht, dass es unbedingt ein guter Ansatz ist, die Autorisierungslogik in das Projektobjekt zu stellen, da es dann vom Benutzerobjekt abhängt. Was denkt ihr?
Beispiel: (aspx Seite Code hinter)
Project oProject = New Project(projectId); //Pass an Int32 here
if (oProject.Load()) //This operation needs to check user permissions somehow
{ /* Do stuff */ }
Also würde ich das Benutzerobjekt in das Projektobjekt übergeben? –
Indirekt über seine Schnittstelle. In dieser Lösung werden Sie nicht in der Lage sein, die Tatsache zu umgehen, dass Projekte und Benutzer über diese Schnittstelle Bescheid wissen, aber das Projekt nicht wissen muss, ob es mit einem Benutzer oder einer TestHarness usw. kommuniziert. – DanDan