Как отключить HTTP POST REQUEST для API oData? - PullRequest
0 голосов
/ 09 июля 2019

Я устанавливаю новое Java-приложение, используя oData и ServletRegistrationBean. Я хотел бы отключить опцию получения POST-запроса и разрешить только GET-запросы.

Где мне его настроить? Могу ли я создать вид белого / черного списка?

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;

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

В Spring Security вы можете легко настроить, чтобы, например, только пользователи с ролью администратора могли выполнять запросы GetRequest. Я приведу пример в ближайшее время, если вы не найдете его в сети до этого. Другие несоответствующие получат 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").

0 голосов
/ 15 июля 2019

Это мой способ отключить опцию POST.

@Override
@RequestMapping(method = {GET,  PATCH, DELETE})
public void service(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) throws ServletException {

    try {........................
...