我正在使用spring-data-rest
并公开端点,以便通过存储库对实体进行CRUD。
其中一个实体应该可以使用补丁/PUT方法更新,但是不应该能够使用POST方法创建一个新实例。
这两个操作似乎都通过save
方法进行,因此似乎不可能只导出一些请求:
@RestResource(exported = ?)
@Override
<S extends User> S save(S s);
实现这一目标的最佳方法是什么?
我应该重写save
方法吗?编写自定义Validator
发布于 2017-07-05 16:55:38
您可以使用
errors
参数中。@ControllerAdvice
捕获,后者返回自定义消息或HTTP代码前两个应该听BeforeCreateEvent
。
发布于 2017-07-06 08:13:26
一个解决方案是扩展WebSecurityConfigurerAdapter (在弹簧-安全-配置中可用),以拒绝对目标url的POST请求的访问:
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/path_to_target_url").denyAll();
}
}
任何向目标URL发布的尝试都将失败,从而导致401 Unauthorized
错误。
https://stackoverflow.com/questions/44931530
复制相似问题