Ich habe einige Probleme, wenn ich versuche, die globale Methodensicherheit in einer Spring Boot-Anwendung zu aktivieren. Mehr oder weniger Ich habe diese Konfiguration:Globale Methodensicherheit im Spring Boot
@ComponentScan
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Main extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
SpringApplication app = new SpringApplication(Main.class);
app.setShowBanner(false);
ApplicationContext context = app.run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Main.class);
}
}
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, proxyTargetClass = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
...
}
@Override
protected void configure(HttpSecurity http) throws Exception {
...
}
}
@Controller
public class SampleController {
@RequestMapping("/api/hello")
@ResponseBody
String hello() {
return "Hello!";
}
@Secured(SecurityGrant.WRITE_PROJECT)
@RequestMapping("/api/bye")
@ResponseBody
String bye() {
return "Bye!";
}
}
Die @Secure Anmerkungen arbeiten an Dienstleistungen in Ordnung, aber nicht in Controller, so wie ich hier gelesen (http://docs.spring.io/spring-security/site/faq/faq.html#faq-method-security-in-web-context) Ich denke, da Methode Sicherheit nur in so konfiguriert ist, der Stammanwendungskontext und nicht in dem für das Servlet. Allerdings kann ich dies nicht über die Java-Konfiguration festlegen, anstatt eine web.xml-Datei zu verwenden. Irgendwelche Ideen?
Update:
Wie in den Kommentaren darauf sollten Methoden öffentlich proxied werden.
Müssen die Controller-Methoden nicht öffentlich sein, damit sie für '@ Secured' verwendet werden können? –
Das ist es! Du hast meinen Tag gerettet. –