servus zusammen, mit Interesse habe ich Eure Unterhaltung bezüglich des rails-authorization-plugin verfolgt. Persöhnlich setze ich restful-authentication im Zusammenspiel mit role_requirement[1] ein. Ist einfach und funktioniert hier problemlos.
Ich schreibe deshalb, weil mich an all den Plugins eines ziemlich stört: sie sind alle zu statisch. Will meinen, man muss (meistens in den betreffenden Controllern) die Zugriffsregeln festlegen. Etwa der Form: require_role "admin", :except => :index Mit anderen Worten: es steht schwarz auf weiß im Programm und kann zur Laufzeit nicht mehr geändert werden: jedwede Änderung hier zieht einen Neustart der Applikation nach sich und das ist es was mich stört. Flexibler wäre es doch, wenn beim Starten von Rails alle Controller und deren öffentliche Aktionen[2] in einer Struktur im Speicher vorgehalten werden. Über das Webfrontend kann dann der Admin die Aktionen der Controller bequem mit den Benutzerrollen verknüpfen - welche in der DB landen. Bei einem nun erfolgenden Request wird über den ohnehin vorhandenen before_filter in die DB geschaut und die require_role Bedingung mit den zugehörigen Aktionen zur Laufzeit in das Plugin "injiziert" - wenn ich so sagen darf. Die Logik des before_filters lagert man in ein eigenes Plugin aus und man folgt dem Prinzip DRY, da die ewigen Wiederholungen aus den Controllern verschwinden. Probleme sehe ich beim Cachen - müsste man halt testen, und natürlich entstehen zusätzliche Datenbankzugriffe. Aber wenn meine Denke richtig ist, kann man so völlig flexibel an den Rechten der Benutzer schrauben, ohne die Applikation neu zu starten. Abschließende Frage: geht das überhaupt so und gibts das vielleicht schon? Gruß Torsten [1] http://github.com/timcharper/role_requirement/tree/master [2] über ActionController::Routing::Routes.routes auslesbar _______________________________________________ rubyonrails-ug mailing list [email protected] http://mailman.headflash.com/listinfo/rubyonrails-ug
