Ich denke, in Ihren früheren Versuchen haben Sie den CSRF-Parameternamen mit dem Namen des Sitzungsattributs vermischt und auch versucht, CsrfToken.class.getName()
, die in früheren Versionen möglicherweise verwendet wurden oder nicht. So einfach, Sie hatten die richtige Idee, aber den falschen Schlüssel. Wenn Sie HttpSessionCsrfTokenRepository
auf den Quellcode schauen, sehen Sie, es die folgenden Standardwerte definiert:
private String parameterName = DEFAULT_CSRF_PARAMETER_NAME;
private String headerName = DEFAULT_CSRF_HEADER_NAME;
private String sessionAttributeName = DEFAULT_CSRF_TOKEN_ATTR_NAME;
Der erste ist der Parametername für, wenn das Token kommt als POST Parameter, die zweite ist die Kopf Name für, wenn es in der Anfrage Header kommt, und der dritte ist der Schlüssel für das Speichern in der Sitzung. Die Methode loadToken
ruft das Token aus dem Anforderungsobjekt nicht wirklich ab - es ruft das Sitzungsobjekt aus der Anforderung ab und sucht dann das Token, das zuvor mit dem Schlüssel gespeichert wurde, der von sessionAttributeName
definiert wird.
Danke für die Antwort @NikolaB. Aber es gibt null. Im Debug sehe ich ein Sitzungsattribut mit einem Schlüssel "org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN". – 0bj3ct