Wie Entferne ich die ROLE_ Präfix von Spring Security mit JavaConfig?

Ich versuche das zu entfernen "ROLE_" - Präfix in Spring Security. Das erste, was ich ausprobiert habe, war:

http.servletApi().rolePrefix("");

Das hat nicht funktioniert, also habe ich versucht die Schaffung eines BeanPostProcessor wie vorgeschlagen in http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-jc.html#m3to4-role-prefixing-disable. Das hat nicht funktioniert entweder.

Schließlich habe ich versucht, meine eigene SecurityExpressionHandler:

  @Override
  protected void configure(HttpSecurity http) throws Exception {
      http
          .authorizeRequests()
          .expressionHandler(webExpressionHandler())
          .antMatchers("/restricted").fullyAuthenticated()
          .antMatchers("/foo").hasRole("mycustomrolename")
          .antMatchers("/**").permitAll();
  }

  private SecurityExpressionHandler<FilterInvocation> webExpressionHandler() {
      DefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
      defaultWebSecurityExpressionHandler.setDefaultRolePrefix("");
      return defaultWebSecurityExpressionHandler;
  }

Jedoch hat dies nicht funktioniert. Wenn ich "hasAuthority(Funktionsname)" statt hasRole, funktioniert es wie erwartet.

Ist es möglich, entfernen Sie das ROLE_ Präfix von Spring Security ist hasRole überprüfen?

  • Seltsam ist die BeanPostProcessor funktioniert bei mir (du hast es als erklären static bean-Methode enthalten und die PriorityOrdered so dass es läuft sehr frühen?) und das gleiche für expression-handlers. Wir haben auch eine DefaultMethodSecurityExpressionHandlerDefaultMethodSecurityExpressionHandler` konfiguriert, die mit dem Präfix festlegen die null.
  • Ja, ich kopierte den code für die BeanPostProcessor direkt aus der Dokumentation. Ich habe versucht, den @Bean in meinem @Configuration Klasse für Spring Security und in meinem @SpringBootApplication Klasse. Ich habe eine System.out.println um sicherzustellen, dass es konfiguriert wird, bevor der Frühling Sicherheit auch. hasAuthority wie erwartet funktioniert, so dass ich denke, ich werde einfach verwenden, statt.
  • Wir haben es in einer nicht spring-boot-Anwendung. Könnte es sein, dass das stören oder die Sicherheit von boot ist immer noch irgendwie konfiguriert früher?
InformationsquelleAutor Matt Raible | 2016-06-30
Schreibe einen Kommentar