Normalerweise trage ich Autorisierungsentscheidungen in meine serverseitigen Controller ein. Dies waren kürzlich RESTful-Endpunkte, aber ich denke, dasselbe gilt für MVC-Architekturen. Aus Gründen des Arguments wird davon ausgegangen, dass es sich um eine rollenbasierte Autorisierung handelt. Eine geschützte Methode wird mit Anmerkungen versehen oder überprüft und gegebenenfalls 403s zurückgegeben.
Angesichts der Tatsache, dass die Autorisierung tatsächlich eine Geschäftsregel ist - "Nur Administratoren können X auflisten", denke ich, dass sie eine Ebene nach unten verschoben werden sollten. Wenn ein Controller die Business-Schicht auffordert, den Vorgang auszuführen, teilt der Service oder die Business-Schicht dem Controller mit, dass er nicht autorisiert ist.
Ist das ein vernünftiger Ansatz? Gibt es Nachteile?
Ich hasse es, einen AuthorizationService zu haben, der im Wesentlichen eine Reihe statischer prozedural codierter Regeln enthält, aber vielleicht ist es sinnvoll, die gesamte Zugriffslogik an einem Ort zu belassen. Ist es ein Querschnittsthema, das getrennt werden sollte?
Ich frage also, ob jemand dies getan hat und wie er es auf saubere Weise erreicht hat oder ob es gute Ressourcen gibt, die ich lesen kann. Ich benutze Java fwiw, aber dies ist eine sprachunabhängige Frage.
Ich habe mir die zugehörigen Fragen hier angesehen und sie sind sehr dürftig und beantworten sie. Zum Beispiel: Validierung und Autorisierung in Domänenmodellen und Übertragen dieser Informationen über eine Service-Schicht an MVC
Ich lese die Sicherheitsdokumente von spring , die einige gute Argumente dafür liefern , dass es sich um ein Querschnittsthema handelt, aber ich mache mir Sorgen, dass es nur der "Frühlingsweg" ist, und ich hätte gerne weitere Perspektiven. Außerdem ist Ihre Anwendung an ein bestimmtes Framework gebunden.