使用 knife4j 3.0.3 测试接口,发现 POST 请求出现错误信息,不是自定义的返回内容。

{
  "timestamp": "2023-03-31T07:23:08.378+00:00",
  "status": 403,
  "error": "Forbidden",
  "message": "Forbidden",
  "path": "/user/delete/3"
}

不清楚什么情况,百度结果是使用了 spring security,要关闭 csrf。已经设置了允许所有的请求,并且 GET 请求就不受影响。看到另一个使用 jwt 的项目也是关闭了 csrf 的,不清楚关闭后会有什么安全风险,但本地测试就不管那么多了。在 web 安全配置里设置 http.csrf().disable() 就可以了。

WebSecucityConfig.php

@Configuration
@EnableWebSecurity
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

        http.csrf().disable()
                .authorizeRequests(
                        requests->requests.requestMatchers()
                        .permitAll()
                        .anyRequest()
                        .authenticated()
                )
                .formLogin(form->form.loginPage("/login").permitAll())
                .logout(LogoutConfigurer::permitAll);

        return http.build();
    }

...