CSRF - meldet sich nur beim ersten Mal an

Wenn ich meine App auf dem Server bereitstelle, kann ich mich zum ersten Mal ohne Probleme anmelden. Aber wenn ich mich auslogge, bekomme ich auf der Logout-Post-Anfrage "403 Forbidden". Dann kann ich mich nicht erfolgreich anmelden, da bei der Anmeldeanforderung der Fehler 403 angezeigt wird. Strg + F5, versuche mich erneut anzumelden und ... es funktioniert, aber nur einmal.

    @Override
    protected void configure(HttpSecurity http) throws Exception {
http
                .authorizeRequests()
                .antMatchers("/apps", "/sites", "/users").authenticated()
                .and()
                .csrf()
                .csrfTokenRepository(csrfTokenRepository())
                .and()
                .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class);
}
private CsrfTokenRepository csrfTokenRepository() {
    HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
    repository.setHeaderName("X-XSRF-TOKEN");
    return repository;
}

und die CsrfHeaderFilter-Klasse:

public class CsrfHeaderFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        CsrfToken token = (CsrfToken) request.getAttribute(CsrfToken.class
                .getName());
        response.setHeader("X-CSRF-HEADER", token.getHeaderName());

        response.setHeader("X-CSRF-PARAM", token.getParameterName());

        response.setHeader("X-XSRF-TOKEN", token.getToken());

        if (token != null) {
            Cookie cookie = WebUtils.getCookie(request, "X-XSRF-TOKEN");
            if (cookie == null || token != null && !token.equals(cookie.getValue())) {
                cookie = new Cookie("X-XSRF-TOKEN", token.getToken());
                cookie.setPath("/");
                response.addCookie(cookie);
            }
        }
        filterChain.doFilter(request, response);
    }

und in Angular:

$httpProvider.defaults.xsrfHeaderName = 'X-XSRF-TOKEN';

Meine App wird auf localhost bereitgestellt: 8080 / myApp, wenn es darauf ankommt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage