HttpSecurity POST 403 Forbidden
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpSecurity POST 403 Forbidden相关的知识,希望对你有一定的参考价值。
我收到错误403 Forbidden for POST端点,其他端点正在按预期工作。
我有4个端点,我需要重现身份验证行为:
GET users - no authentication
GET details1 - needs authentication
GET users1 needs authentication
POST users1 needs authentication
我的配置类:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication()
.passwordEncoder(org.springframework.security
.crypto.password.NoOpPasswordEncoder.getInstance())
.withUser("user").password("pwd")
.roles("USER").and().withUser("admin").password("pwd")
.roles("USER", "ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers( "/users").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
Maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
答案
我怀疑csrf
造成了这个问题。
如果你没有使用csrf
但仍默认启用它。请参阅Cross Site Request Forgery (CSRF)所以尝试禁用csrf
保护。
如果您在安全性中启用CSRF,则需要更新您的帖子请求以包含一些额外信息。它解释了为什么GET可以工作,但POST没有。
在您的情况下,尝试禁用它,如下所示,看看它是否解决了问题。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable();
}
以上是关于HttpSecurity POST 403 Forbidden的主要内容,如果未能解决你的问题,请参考以下文章