Ich bin der Autor des betreffenden Artikels.
Zweifellos gibt es mehrere Möglichkeiten, dies zu tun, aber ich implementiere normalerweise eine benutzerdefinierte Methode UserDetails
, die sich mit Rollen und Berechtigungen auskennt. Role
und Permission
sind nur benutzerdefinierte Klassen, die Sie schreiben. (Nichts Besonderes - Role
hat einen Namen und eine Reihe von Permission
Instanzen und Permission
einen Namen.) Dann getAuthorities()
gibt das GrantedAuthority
Objekt Objekte zurück, die so aussehen:
PERM_CREATE_POST
, PERM_UPDATE_POST
,PERM_READ_POST
anstatt Dinge wie zurückzugeben
ROLE_USER
, ROLE_MODERATOR
Die Rollen sind weiterhin verfügbar, wenn Ihre UserDetails
Implementierung über eine getRoles()
Methode verfügt. (Ich empfehle einen zu haben.)
Im Idealfall weisen Sie dem Benutzer Rollen zu und die zugehörigen Berechtigungen werden automatisch ausgefüllt. Dies würde einen Benutzer beinhalten UserDetailsService
, der weiß, wie diese Zuordnung durchgeführt wird, und alles, was er tun muss, ist, die Zuordnung aus der Datenbank zu beziehen . (Siehe Artikel für das Schema.)
Anschließend können Sie Ihre Berechtigungsregeln in Bezug auf Berechtigungen anstelle von Rollen definieren.
Hoffentlich hilft das.