私は、次のCSRF-設定があります。春ブーツとCSRF - Forbitten 403 - 私の春ブーツ/ AngularJSアプリケーションで>間違ってログアウト
:CSRF-トークンフィルターは次のようになります@Override
protected void configure(final HttpSecurity http) throws Exception {
http.csrf().csrfTokenRepository(csrfTokenRepository()); http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
final String[] restEndpointsToSecure = WebSecurityConfig.restEndpointsToSecure;
for (final String endpoint : restEndpointsToSecure) {
http.authorizeRequests().antMatchers("/" + endpoint + "/**").hasRole(UserRoleEnum.USER.toString());
}
http.addFilterAfter(csrfTokenResponseHeaderBindingFilter(), CsrfFilter.class);
xAuthTokenConfigurer.setDetailsService(userDetailsServiceBean());
final SecurityConfigurer<DefaultSecurityFilterChain, HttpSecurity> securityConfigurerAdapter = xAuthTokenConfigurer;
http.apply(securityConfigurerAdapter);
}
を
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, javax.servlet.FilterChain filterChain)
throws ServletException, IOException {
final CsrfToken csrf = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
if (csrf != null) {
Cookie cookie = WebUtils.getCookie(request, "XSRF-TOKEN");
final String token = csrf.getToken();
if (cookie == null || token != null && !token.equals(cookie.getValue())) {
cookie = new Cookie("XSRF-TOKEN", token);
cookie.setPath("/");
response.addCookie(cookie);
}
}
filterChain.doFilter(request, response);
}
通常は正常に動作しますが、リクエストヘッダプロパティX-XSRF-TOKENはリクエストごとに送信されます。しかし、私は奇妙な行動をしています。 私はアプリケーションで自分のユーザープロフィールを更新します。初めて正常に動作したとき、2番目のHTTP 403 Forbiddenを取得しましたが、実際になぜそれが実際にはわかりません。 私はこの2つのアップデートの間に何もしません(この2つのアップデートの間の他のページへのナビゲーションはありません)。
左下の画像は左側の画像で、右側の画像は正常な画像です。唯一の違いは、右側のプロパティーがセットクッキーとです。レスポンスヘッダーにX-Application-contextがありません。要求ヘッダは等しい。
私がここで間違っていることを誰もが知っていますか?私のためにここの神秘的な種類。
角度コードを投稿できますか?具体的にはあなたの角度ルートコード。 –
これは、任意の2番目の試行の共通の動作ですか、それともプロファイルの更新のみですか? – sura2k