1

我在 Spring 中的安全配置:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                    .cors()
                .and()
                    .authorizeRequests()
                    .antMatchers("/user/save")
                    .permitAll()
                .and()
                    .authorizeRequests()
                    .antMatchers("/user/**")
                    .hasRole("USER")
                .and()
                    .httpBasic()
                .and()
                    .logout()
                    .clearAuthentication(true)
                    .invalidateHttpSession(true)
                    .deleteCookies("JSESSIONID")
                    .deleteCookies("XSRF-TOKEN")
                    .permitAll()
                .and()
                    .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
    }

我在前端使用 Angular 6。我正在端点上做一个POST/logout。我可以看到根据请求发送JSESSIONID的 cookie 和XSRFcookie(使用 Chrome 中的开发人员工具)。

但是,在 Spring 服务器端应用程序的控制台上,我得到以下堆栈跟踪:

Invalid CSRF token found for http://localhost:8009/logout

...并且注销请求失败。

我不明白为什么 XSRF 令牌没有被更新(如果是这样的话),或者为什么令牌无效。任何帮助表示赞赏。

4

0 回答 0