Globale Methode, die Sicherheit in den Frühling Starten
Ich habe einige Probleme beim Versuch, aktivieren Sie die Globale Methode, die Sicherheit in einer Spring-Boot-Anwendung.
Mehr oder weniger habe ich diese Konfiguration:
@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 sind OK arbeiten an Dienstleistungen, aber nicht im Controller, so wie ich hier gelesen habe (http://docs.spring.io/spring-security/site/faq/faq.html#faq-method-security-in-web-context) ich glaube da liegt Methode Sicherheit wird nur konfiguriert im root-Kontext Anwendung und nicht in dem für das servlet.
Aber ich kann nicht finden, die Möglichkeit, dies über die Java-Konfiguration, anstelle der Verwendung einer web.xml Datei.
Irgendwelche Ideen?
Update:
Wie schon in den Kommentaren, Methoden, sollten öffentlich sein werden umgeleitet.
- Nicht die controller-Methoden müssen public sein, um Proxy für
@Secured
? - Das ist es! Sie meinen Tag gerettet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den controller-Methoden müssen public sein, um Proxy für
@Secured
. Nur tun, das sollte es beheben.In XML müsste man definieren eine zweite
global-method-security
im servlet-context.xml Datei. Dies ist weil es gibt zwei Kontexte, den root-Kontext und das web-Kontext und-Sicherheit konfiguriert werden muss, um in jeder separat.In Java-config, versuchen Sie, erstellen Sie eine separate web-configuration-Klasse, und markieren Sie es mit
@EnableWebMvc
:@EnableAutoConfiguration
bereits tut, so glaube ich nicht, dass ist das problem.