Spring Boot中的全局方法安全性

尝试在Spring Boot" title="Spring Boot">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!";

}

}

@Secure批注可以在服务上正常运行,但不能在控制器上正常运行,因此正如我在此处阅读的内容(http://docs.spring.io/spring-

security/site/faq/faq.html#faq-method-security-in -web-

context),我认为这是因为方法安全性仅在根应用程序上下文中配置,而不是在servlet上下文中配置。但是,我找不到通过Java配置而不是使用web.xml文件进行设置的方法。有任何想法吗?

正如评论中指出的那样,应该公开使用方法。

回答:

控制器方法需要公开才能被代理使用@Secured。只是这样做应该解决它。

以上是 Spring Boot中的全局方法安全性 的全部内容, 来源链接: utcz.com/qa/412537.html

回到顶部