我有一个非常简单的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