Ich möchte Sicherheitsregeln basierend auf benutzerdefinierten URL-Parametern (Pfadvariablen) erstellen. In Beispiel. Nehmen wir an, ich möchte einen Benutzer haben, der Administratorzugriff für Ressourcen namens Brand1 und Brand2 hat, aber keinen Zugriff auf die Ressource Brand3 hat. Wir können Ressourcen mit folgenden Links bearbeiten.Spring Security mit Pfadvariablen
http://myapp/brand/edit/1
http://myapp/brand/edit/2
http://myapp/brand/edit/3
jetzt in Sicherheitskontext würde Ich mag so etwas wie dieses
<security:intercept-url pattern="/brand/edit/{brandId}"
access="hasRole('ROLE_ADMIN') or
@authorizationService.hasBrandPermission(
#brandId, principal.username)"/>
Das einzige, was ich Benutzername ist zu tun bekommen. BrandId ist immer null. Ich habe das mit @PreAuthorize gemacht und es hat funktioniert, aber jetzt möchte ich die Sicherheitskonfiguration in einer einzelnen XML-Datei zentralisieren, anstatt sie auf alle Controller-Klassen zu verteilen. Wenn ich @PreAuthorize verwendete, hat mich mein access-densumed-handler nicht auf die verweigerte Seite weitergeleitet, sondern hat eine hässliche AccessDeniedException inead angezeigt.
Ich würde wirklich irgendwelche Ideen aprecieate.
Ich bekomme das Problem nicht. Ist die BrandId immer Null? Oder ist es, dass es die Ressource nicht sichert? Oder ist es die hässliche AccessDeniedException-Seite? –
BrandID ist Null –