如何禁用 oData API 的 HTTP POST REQUEST?
How to disable HTTP POST REQUEST of oData APIs?
我正在使用 oData 和 ServletRegistrationBean 设置一个新的 Java 应用程序。
我想禁用接收 POST 请求的选项,只允许 GET 请求。
我应该在哪里设置?
我可以创建一种 whitelist/blacklist 吗?
ServletRegistrationBean odataServRegstration = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/odata/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
initParameters.put("org.apache.olingo.odata2.service.factory", "com.sap.context.JPAServiceFactory");
odataServRegstration.setInitParameters(initParameters);
return odataServRegstration;
在 spring 安全性中,您可以轻松配置,例如只有角色管理员的用户才能发出非 GetRequest。除非您在此之前在网上找到它,否则我将很快提供一个示例。其他 unseres 将收到 403。
一个简单的例子是:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/**").hasRole("ADMIN")
.antMatchers("/**").hasAnyRole("ADMIN","USER")
.and()
.httpBasic()
;
}
关注.antMatchers(HttpMethod.POST, "/**").hasRole("ADMIN")
.
这是我禁用POST选项的方法。
@Override
@RequestMapping(method = {GET, PATCH, DELETE})
public void service(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) throws ServletException {
try {........................
我正在使用 oData 和 ServletRegistrationBean 设置一个新的 Java 应用程序。 我想禁用接收 POST 请求的选项,只允许 GET 请求。
我应该在哪里设置? 我可以创建一种 whitelist/blacklist 吗?
ServletRegistrationBean odataServRegstration = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/odata/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
initParameters.put("org.apache.olingo.odata2.service.factory", "com.sap.context.JPAServiceFactory");
odataServRegstration.setInitParameters(initParameters);
return odataServRegstration;
在 spring 安全性中,您可以轻松配置,例如只有角色管理员的用户才能发出非 GetRequest。除非您在此之前在网上找到它,否则我将很快提供一个示例。其他 unseres 将收到 403。
一个简单的例子是:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/**").hasRole("ADMIN")
.antMatchers("/**").hasAnyRole("ADMIN","USER")
.and()
.httpBasic()
;
}
关注.antMatchers(HttpMethod.POST, "/**").hasRole("ADMIN")
.
这是我禁用POST选项的方法。
@Override
@RequestMapping(method = {GET, PATCH, DELETE})
public void service(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) throws ServletException {
try {........................