2017-10-31 2 views
0

Ich habe eine architektonische Frage. Wo sollte ich Benutzerberechtigungen für bestimmte Vorgänge prüfen?Wo sollten die Berechtigungen im Web-Service überprüft werden?

Zum Beispiel:

1) In einem Controller, ich Parameter aus Sicht und ein Verfahren, bei dem Zwischenmodell starten.

2) Zwischenmodell entscheiden, welche Parameter sollte in irgendeiner Weise konvertiert und transformiert werden und ändern oder erstellen Daten über Modelle

3) Modell mit DataBase direkt kommunizieren

Wo denken Sie ist der richtige Ort in diese "Architektur", um Berechtigungen zu überprüfen, um beispielsweise etw in der Datenbank zu speichern?

enter image description here

Antwort

1

Ich würde tatsächlich die Berechtigungsprüfung setzen, bevor der Controller genannt wird, ein bisschen wie beschrieben here (Ich brauche wirklich, dass alte Post zu aktualisieren). Vorzugsweise als Dekorator um die Controller-Instanz, die Ihnen eine feinkörnige Kontrolle darüber geben würde, welche Operation der Benutzer ausführen darf, basierend auf Controller + Methode Paar. Ein weiterer Punkt, an den Sie denken könnten, ist die Hilfsfunktion "Authorization Lookup" zur Verwendung in Ihren Vorlagen, da Sie möglicherweise Benutzeroberflächenelemente anzeigen oder ausblenden müssen, die die zugehörigen Vorgänge nicht ausführen können. Die Controller + Methode überprüfen, vor der Ausführung würde immer noch als der eigentliche Schutz dann arbeiten, aber es neigt dazu, eine Verbesserung der Lebensqualität sein.

Sie sollte nicht die Autorisierungsprüfungen innerhalb der einzelnen Controller oder (noch schlimmer) Modellschicht setzen, weil das tendenziell eine übermäßige Menge an Copy-Paste, die wiederum Fehler verursachen kann und ein großes Problem wird, zu fördern, wenn Sie die Mechanik Ihres Autorisierungssystems verändern wollen.

Verwandte Themen