Rolf B: Parametername gleich Name der Methode

Beitrag lesen

problematische Seite

Hallo beatovich,

du darfst nicht von einer konkreten Implementierung auf die Sicherheit des Prinzips schließen.

Ein MVC-Framework muss sicherstellen, dass

  • nur Klassen als Controller verwendet werden, die als MVC-Controller vorgesehen sind
  • darin nur Methoden via MVC aufgerufen werden, die als MVC-Actions gedacht sind

Wenn das Framework dieses Minimum nicht gewährleistet, taugt es nichts und gehört in die Tonne. Die Frage, WIE die Implementierung das konkret gewährleistet, ist erstmal egal.

Ein zusätzlicher Bonus ist es, wenn das Framework ein Security-Modell mitbringt und es mir auf einfache Weise erlaubt, pro Action festzulegen, ob sie einen Login voraussetzt und ggf. sogar den Login eines bestimmten Users, bzw. den Login eines Users, der in einer bestimmten Security-Gruppe ist. Ohne diesen Bonus muss ich zu Beginn jeder zu sichernden Methode eine Verifikationsmethode aufrufen, die diesen Teil übernimmt.

In ASP.NET MVC ist es zum Beispiel so, dass das Standard-Routing jede Klasse, deren Name auf "Controller" endet und die vom MVC Controller abgeleitet ist, als Controller nutzt. Ganz automatisch und ohne jede Konfiguration. Jede öffentliche Methode darin kann Action sein, sofern ihre Parameter auf die vom Routing vorgesehene Parametrierung passen.

D.h. MVC schiebt den URL-Fabrikanten zwei Riegel vor: Es muss ein Controller sein, und die Methode muss public sein. Wenn ich als Programmierer Klassen und Methoden schreibe, die auf dieses Muster passen, die aber nicht per MVC erreichbar sein sollen, mache ich was falsch; aber das weiß ich als ASP.NET MVC Programmierer.

Fragen wie "darf dieser Client diese Action verwenden" werden im ASP.NET MVC Routing ebenfalls adressiert. Hier muss ich dann doch konfigurieren, es gibt das [Authorize] Attribut für Action-Methoden, das einen eingeloggten User verlangt um eine Methode aufrufen zu können, und über das ASP.NET Rollenmodell kann ich mit [Authorize(RolleXY)] auch verlangen, dass der User eine bestimmte Rolle hat, um diese Action verwenden zu dürfen. Für den Login und die Ermittlung der Rollen, die dieser User hat, kann ich konfigurativ im ASP.NET MVC Framework Module hinterlegen, die sich darum kümmern. Das ist eine komplette eigene Abteilung des ASP.NET Frameworks, die ASP.NET MVC ganz einfach mit nutzt.

Rolf

--
sumpsi - posui - clusi