我可以在spring-data-rest存储库中专门禁用PATCH吗?

时间:2016-12-27 13:11:16

标签: spring-boot spring-data-rest

我们API的客户不使用补丁,我希望避免它用于维护开销。我不想禁用POST或PUT。

2 个答案:

答案 0 :(得分:2)

可以在安全级别处理,方法是扩展WebSecurityConfigurerAdapter(在spring-security-config中可用)并覆盖configure(HttpSecurity http)以拒绝对目标URL的PATCH请求:

@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers(HttpMethod.PATCH, "/path_to_target_url").denyAll();
    }

}

任何PATCH到目标网址的尝试都将失败,并显示401 Unauthorized错误。

答案 1 :(得分:0)

也许有必要将插件插入REST控制器......例如:

@RestController
@RequestMapping("/api/...")
@ExposesResourceFor(...)
public class MyController {
...
    @PatchMapping
    HttpEntity<?> patch() {
        return new ResponseEntity<>(HttpStatus.METHOD_NOT_ALLOWED);
    }
}