Ich habe eine Anwendung, die Spring Security für serverseitige Authentifizierung/Autorisierung, Spring MVC für die REST Server-Seite Endpunkte und AngularJS für Ansicht verwendet.Wie kann AngularJS oder eine andere Einzelseitenanwendung auf Basis von authentifizierten Benutzerrechten ordnungsgemäß versteckt/angezeigt werden?
Auf der Serverseite habe ich alle Filter implementiert, die für den Zugriff auf alle REST-Endpunkte erforderlich sind, basierend auf den Benutzerrechten. Meine Frage ist, wie soll ich mich wenden machen sichtbar/html Elemente, basierend auf den authentifizierten Benutzer Rechte versteckt?
Zum Beispiel habe ich in der Ansicht 3 Tasten (button1, button2, button3). Jede Taste hat eine entsprechende USER RIGHT, die sie sichtbar machen/verbergen sollte. Nennen wir diese Rechte USER_RIGHT1, USER_RIGHT2, USER_RIGHT3.
Wenn der Benutzer das Recht USER_RIGHT1 hat, soll er in der Ansicht sieht die button1, wenn er das Recht USER_RIGHT2 hat er die button2, und so weiter in der Ansicht sehen soll.
Mein Ansatz war eine Liste der authentifizierten Benutzerrechte auf dem Client zu haben, und etwas zu tun, wie das folgende Beispiel:
<div ng-if="rights contains USER_RIGHT1">
<button name="button1".... />
</div>
<div ng-if="rights contains USER_RIGHT2">
<button name="button2".... />
</div>
Ich bin nicht sicher, ob der authentifizierte Benutzer rechtse Liste in dem Client sein sollte .
Wie soll ich dieses Problem angehen? Mache ich es richtig?
Ich mag diesen Ansatz und den Ansatz von @cuttlas sehr gut, aber wenn ich diese Rechte verwende, die in der Richtlinie "Sichtbar zur Rolle" fest codiert sind, sind sie für den Client (in einer Entwicklungsumgebung) immer noch sichtbar. Werkzeuge wie ch Rom). Kann etwas in AngularJS gemacht werden, um diese Direktive und ihre Parameter nach der Auswertung zu löschen? Wie wenn ich Elemente in Chrome auf diesem div überprüfe, möchte ich wirklich "admin, usermanager", hardcoded nicht sehen. (In meinem Beispiel möchte ich nicht, dass die Clients nach den Rechten schnüffeln sollten, die sie benötigen, um bestimmte Aktionen auszuführen oder, um zu sehen, was andere Benutzer auf dieser Seite tun könnten) – Capybara
Und auch ich mag es wirklich nicht, irgendwo in meinem Javascript ist eine Liste der authentifizierten Benutzerrechte. Selbst wenn der Server den Zugriff auf die REST-Endpunkte nicht erlaubt, kann der Benutzer dieses Objekt manipulieren und sich selbst andere Rechte geben. Denke ich zu weit? Oder sollte ich an einfachen Dingen festhalten? :) – Capybara
Ja, Sie sind völlig korrekt, aber selbst wenn Sie das Attribut löschen, nachdem die Direktive verlinkt ist 'el.removeAttr (' visible-to-role ')' Ich könnte einfach Ihren JavaScript-Code anschauen oder besser noch die Direktive ändern . Also solltest du wirklich nichts außerhalb deines Servers denken, wie auch immer irgendwie sicher. Es ist einfacher, 99% Ihrer Benutzerdatenbank zu täuschen - Sicherheit sollte immer auf dem Server erfolgen. – Jon