【发布时间】:2014-08-11 21:45:53
【问题描述】:
我希望我的 Spring-HATEOAS API 应用程序(基于 Spring-Boot 和 Spring-MVC 构建)配置安全性,以便默认情况下拒绝所有端点/控制器方法,并且只能通过方法注释显式授予访问权限。
我已经能够得到它,所以注释控制所有访问,但如果开发人员忘记添加注释,匿名用户可以访问该方法。我希望开发人员必须显式注释(或执行一些其他显式开发操作)该方法以允许匿名访问。
也许我需要编写一个自定义的 AccessDecisionManager,但我认为有理由怀疑默认情况下拒绝行为已被烘焙...我只需要转动正确的旋钮。
我一直在徒劳地尝试用这样的东西来做到这一点:
@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.hasRole("NOONEHASIT")
;
}
}
还有一个控制器:
@Controller
public class RootController {
@RequestMapping("/")
@PreAuthorize("hasRole('DEFAULT') or isAnonymous()")
public HttpEntity<RootResource> root(){
//stuff
}
}
认为没有人有这个角色,但这只是否认每个人。
有人拿到魔法酱了吗?
【问题讨论】:
标签: spring-mvc spring-security spring-boot spring-data-rest spring-hateoas