我知道有很多这样的问题,但我找不到解决我的问题的答案。
这是我的配置:
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.permitAll()
.and()
.logout().permitAll();
}
}
这是我的端点,我希望用户无需登录即可访问:
@Slf4j
@RestController
public class MyController {
@PostMapping(value = "/", consumes = MediaType.TEXT_PLAIN_VALUE)
public void acceptAnonymously(HttpEntity<String> requestEntity) {
log.debug("body: {}", requestEntity.getBody());
}
}
所以基本上,我希望允许未经验证的post请求 localhost:8080
. 其他一切都应该经过认证。但当我击中 localhost:8080
对于 Postman ,我得到的是:
1条答案
按热度按时间iqih9akk1#
所以,csrf代表跨站点请求伪造,我相信springweb/security默认启用了csrf。当它被启用时,您需要正确地将正确的csrf令牌传递给您的应用程序,以便访问您的应用程序,否则您将被抛出403禁止类型错误。或者,如果您需要,还可以使用其他方法对用户进行身份验证。
.csrf().disable()