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. Roleund Permissionsind nur benutzerdefinierte Klassen, die Sie schreiben. (Nichts Besonderes - Rolehat einen Namen und eine Reihe von PermissionInstanzen und Permissioneinen Namen.) Dann getAuthorities()gibt das GrantedAuthorityObjekt 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 UserDetailsImplementierung ü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.