2015-08-13 2 views
10

Meine Spring Boot-Anwendung funktioniert auf Spring Security 3.2.7.RELEASE. Jetzt möchte ich es auf 4.0.2.RELEASE aktualisieren.Umgang mit defaultRolePrefix = "ROLE_" im Frühjahr Sicherheitsupdate von 3.2.7 auf 4.0.2.RELEASE

Nach Stunden des Debug ich, dass Spring Security 4.0.2.RELEASE defaultRolePrefix="ROLE_" verwendet

in

org.springframework.security.access.expression.SecurityExpressionRoot.hasAnyAuthorityName(String prefix, String... roles) Methode

In meiner Anwendung verwenden, ohne diesen Präfix ich Rollen gefunden haben und ich entsprechend AccessDeniedException .

Wie konfiguriert man Spring Boot um SecurityExpressionRoot.defaultRolePrefix="" zu verwenden?

+1

Es tut mir leid, dass Sie Schwierigkeiten bei der Migration hatten. Haben Sie gesehen, dass dies im Migrationsleitfaden behandelt wird? http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#m3to4 Insbesondere, wenn Sie dem Link folgen, den ich gesendet habe, sollten Sie http://docs.spring.io/ feder-security/site/migrate/current/3-zu-4/html5/migrate-3-zu-4-jc.html # m3to4-role-prefixing –

+1

Danke Rob, ich habe nach 2 Stunden einen Grund dafür gefunden Debug Frühling Sicherheitsprojekt. Ich habe hasRole zu hasAuthority geändert und jetzt funktioniert alles wie ein Charme. – alexanoid

+1

Schön zu sehen, dass Sie das Problem gefunden haben. Ich hatte gehofft, dass, wenn Sie (oder andere) weitere Probleme mit der Migration haben, der von mir zur Verfügung gestellte Leitfaden helfen wird. –

Antwort

9

Ich fand die Lösung, wie man es beheben kann. Ich brauche hasRole zu hasAuthority, zum Beispiel zu ändern:

@PreAuthorize("hasAuthority('PERMISSION_CREATE_NODE')") 
0

In der anderen Hand, die Sie Rolle Präfix ass here beschrieben entfernen. In diesem Fall können Sie andere Anmerkungen verwenden.

Verwandte Themen