405不允许用于POST的方法

我有一个非常简单的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方法不允许

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

回答:

这应该很容易。

如果启用了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

以上是 405不允许用于POST的方法 的全部内容, 来源链接: utcz.com/qa/419692.html

回到顶部