springsecurityを確認してください。getリクエストは正常です。postリクエスト403エラーです。

この記事で使用されている SpringBoot バージョン: 2.7.6

springsecurity を導入した後、すべてのリクエストにアクセスできるように構成します。

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    
    
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    
    
        http.authorizeRequests().anyRequest().permitAll();
        return http.build();
    }
}

投稿リクエストを送信すると、応答は 403 になります。

{
    
    
	"timestamp": "2023-08-03T06:56:00.277+00:00",
	"status": 403,
	"error": "Forbidden",
	"path": "/hi"
}

コンソールには関連するエラー メッセージがなかったので、デバッグをオンにしてトレースして、特定のエラーの詳細を確認しました。

debug: true
trace: true

リクエストが再度開始され、関連するエラー情報がコンソールに出力されましたが、CsrfFilter フィルターによってインターセプトされました。

o.s.security.web.csrf.CsrfFilter         : Invalid CSRF token found for http://127.0.0.1:9001/hi
o.s.s.w.access.AccessDeniedHandlerImpl   : Responding with 403 status code
o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{
    
    timestamp=Thu Aug 03 14:56:00 CST 2023, status=403, error=Forbidden, path=/hi}]

クラス パス: ossecurity.web.csrf.CsrfFilter に従って、CsrfFilter コードを確認します。csrf 攻撃を防ぐために、CsrfFilter はリクエストに含まれる csrftoken の正しさを検証します。失敗した場合は、403 で応答します。キー コード: したがって、get
ここに画像の説明を挿入
ここに画像の説明を挿入
リクエストは正常です。リクエストで 403 エラーが発生しました。

CSRF は眠れる巨人であり、保護が必要です。springsecurity csrftoken を使用しない場合は、csrf を無効にするだけです。

http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();

おすすめ

転載: blog.csdn.net/weixin_43275277/article/details/132083862