小编典典

405不允许用于POST的方法

spring-boot

我有一个非常简单的spring boot应用程序,该应用程序受以下代码保护:

http.authorizeRequests()
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .and()
          .formLogin().loginPage("/login").failureUrl("/login?error")
          .usernameParameter("username").passwordParameter("password")
        .and()
          .logout().logoutSuccessUrl("/login?logout")
        .and()
          .exceptionHandling().accessDeniedPage("/403");

这个想法是为了保护“管理员”部分。它公开了REST API。问题是所有POSTS返回

405方法不允许

如果我从应用程序中删除了安全启动器,它将起作用。这使我相信安全配置是问题所在。但我不知道如何。


阅读 564

收藏
2020-05-30

共1个答案

小编典典

这应该很容易。

如果启用了CSRF,则不允许POST和PUT请求,默认情况下,spring boot会启用这些请求。

只需将其添加到您的配置代码中:

.csrf().disable()

那是 :

http.
.csrf().disable().
authorizeRequests()
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .and()
          .formLogin().loginPage("/login").failureUrl("/login?error")
          .usernameParameter("username").passwordParameter("password")
        .and()
          .logout().logoutSuccessUrl("/login?logout")
        .and()
          .exceptionHandling().accessDeniedPage("/403");

如果需要启用CSRF,请参考docs:

http://docs.spring.io/spring-
security/site/docs/4.0.x/reference/htmlsingle/#csrf-
configure

2020-05-30