是否可以仅保护标有Spring @Secured注释的控制器

时间:2017-08-03 10:12:10

标签: java spring spring-security

我有几个控制器,只想保护其中一个, 花一些时间,但没有找到适当的解决方案。

如何通过配置完成?

控制器:

width = HORIZONTAL_SCALING * (float)depth;
height = VERTICAL_SCALING * (float)depth;

配置:

@RestController
@RequestMapping("/somepath")
public class UnsecController {
// code here
}

@Secured("ROLE_CUSTOM")
@RestController
@RequestMapping("/somepath2")
public class SecController {
// code here
}

修改

我有100个想要保护的100个控制器, 但不想手动编写配置

1 个答案:

答案 0 :(得分:0)

通过配置WebSecurityConfigurerAdapter来保护控制器。如果您只想保护一个控制器方法,则需要以这种方式配置HttpSecurity,它只匹配此路径。所有其他方法都不包含在安全性中。如下:

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/somepath").hasRole("CUSTOM")
.anyRequest().permitAll();
} 

@Secured注释通常用于服务方法,而不是控制器。