Ich habe gefragt relative question über hasAuthority() und hasRole() und this part is clear. Ich habe versucht, meine Anwendung mit group authorities zu konfigurieren. Konfiguration funktioniert für mich, wenn ich Anweisung verwenden .hasAuthority ("ADMIN")Frühling Sicherheit jdbcauthentication Behörden über Gruppen
http
.antMatcher("/monitor/console/**")
.authorizeRequests()
.antMatchers("/monitor/console/**")
.hasAuthority("ADMIN")
.... // other unimportant java code..
Aber wenn ich ändern Sie ihn auf .hasRole ("ADMIN") oder .hasRole ("ROLE_ADMIN") Einschränkung funktioniert nicht. Ich kann Benutzerdaten in der Anmeldung in JdbcDaoImpl Dienst geladen überprüfen, und ich kann Berechtigungsliste damit verbunden sehen, aber ich weiß nicht, warum hasRole (..) funktioniert nicht. Ich hoffe, dass jemand weiß, wo ich meinen Haltepunkt verwenden muss, um den Zustand von Objekten zu überprüfen und das Ergebnis zu vergleichen oder wie es behoben werden kann.
Ich bin wirklich verwirrt, weil die Beschränkungen richtig funktioniert, wenn ich einzelne Behörden Tisch ...
ich verstehe Ihren Standpunkt nicht, sorry. Was ist der Grund, wenn meine ** hasAuthority (...) ** korrekt funktioniert, aber ** hasRole (...) ** beschädigt ist? – Sergii
Auch wenn Sie an _ROLE__ Präfix Regel glauben, bitte beachten Sie zwei Fälle: 1. Ich kenne diese Regel (siehe Frage Beschreibung). 2. Ich habe [ein altes Problem] (https://github.com/spring-projects/spring-security/issues/2726), aber keine Lösung. Mein Rollenpräfix wird mit "" überschrieben. – Sergii
Der Punkt ist, die Methode hasRole() fügt das Präfix ROLE_ zum rolename receive als Parameter hinzu. Ihre aktuelle Autorität ist ADMIN. Wenn Sie also hasRole ("ADMIN") aufrufen, wird nach ROLE_ADMIN gesucht, und diese existiert nicht (nur ADMIN und nicht ROLE_ADMIN). Dasselbe gilt für den Aufruf von hasRole ("ROLE_ADMIN"). Ich denke, dass Sie den Namen der Autorität zu ROLE_ADMIN anstelle von ADMIN ändern müssen, wenn Sie hasRole ("ADMIN") aufrufen, sucht es nach ROLE_ADMIN. – reos