Ich frage mich, was der beste Ansatz zum Hinzufügen von Rollen zu Benutzern / Berechtigungen zu Handler
s oder Ressourcen in Yesod ist. Hat irgendjemand für diese Art von Dingen einen Stand der Technik? Gibt es Ansätze, die das Typsystem nutzen, um Ausrutscher zu verhindern (und auch Datenbankabfragen so gering wie möglich zu halten)?
EDIT: Entschuldigung dafür, dass ich das vorher übersehen habe - ich habe bemerkt, dass es tatsächlich einen Abschnitt gibt, den ich auf den ersten Blick übersehen habe (ich denke, weil es keine Erwähnung von Zugriff / Rollen / Berechtigungen gibt), auf Autorisierung im Yesod-Buch. Dies scheint die Zugriffskontrolle auf der Router-Ebene mit einem Schreib-Flag für PUT / POST zu tun. Es scheint nicht besonders raffiniert zu sein, aber es sieht gut aus für den Aufbau von Abstraktionen an der Spitze ...
In der Zeit seit der Veröffentlichung habe ich diesen sehr hilfreichen Blogeintrag Abstrahieren von Berechtigungen mit Jessod gefunden von Felipe Lessa. Es baut auf der vorhandenen Funktion isAuthorized
auf und demonstriert eine einfache Strategie zum Hinzufügen von Rollen zu Benutzern und zum Zugreifen auf Ressourcen.
Grundsätzlich definiert
%Vor%um so etwas zu bekommen:
%Vor% wobei permissionsRequiredFor
eine Liste eines benutzerdefinierten Datentyps Permission
wie folgt zurückgibt:
Das ist einfach und praktisch, danke Felipe. (Es wäre nett, wenn jemand versucht, solche Dinge in Bibliotheksform festzuhalten und in Hackage zu veröffentlichen, um die Zugriffskontrolle so schnell wie möglich in Ihrer App zu finden und zu löschen! Alternativ vielleicht im Yesod-Gerüst?)
Tags und Links haskell authorization access-control rbac yesod