Ich habe kürzlich eine Tomcat-Web-App in JSP entwickelt, die deklarative Sicherheit (server.xml / web.xml) verwendet, die an das Active Directory des Unternehmens gebunden ist. Ich wurde gebeten, dem jungen Projekt JSF-Unterstützung hinzuzufügen. Es war eine einfache Sache, das Login-Formular in jsf umzuwandeln, und das Sicherheitsmodell funktionierte immer noch.
Ein Mitarbeiter fragte, ob ich einem größeren Publikum erlauben könnte, einen der Berichte anzuzeigen, aber die Aktionsschaltflächen nur für eine kleinere Gruppe rendert. Da ich neu bei JSF war, musste ich etwas recherchieren.
Ich habe ungefähr vier Stunden damit verbracht, Dinge wie "jsf-Knopfsicherheit" und "jsf-Knopfberechtigungen" zu googeln und verschiedene Vorschläge auszuprobieren, die meistens Sackgassen waren. Ein anderer Mitarbeiter hatte vorgeschlagen, das Spring-Sicherheitsmodell zu verwenden, aber ich wollte nicht mit einer ganzen Reihe Spring-Bibliotheken arbeiten, wenn es einen einfacheren Weg dafür gäbe.
Schließlich stieß ich auf die Antwort, die unglaublich einfach war. Ich brauchte nur die HttpServletRequest-Methode zu verwenden: isUserInRole (), um festzustellen, ob der aktuell angemeldete Benutzer berechtigt ist, die Aktionsschaltflächen zu sehen. Ich habe HttpServletRequests eine Menge in den letzten zehn Jahren verwendet, aber ich erinnere mich nicht, jemals über diese Methode zu lernen. Mit jsf ist es eine einfache Sache, wie unten gezeigt zu dieser Methode zu gelangen: %Vor%Meine Fragen speziell sind: Gibt es irgendwelche Probleme mit diesem Ansatz, den ich beachten sollte, und gibt es einen anderen einfacheren Weg, es zu tun?
Wenn Sie Tomahawk als Addon für Ihre JSF-Implementierung verwenden, haben die meisten Steuerelemente ein visibleOnUserRole-Attribut. Sie können im Wert mehrere Rollennamen verwenden.
Tags und Links java servlets jsf jsf-2 declarative-security