Ich verwende Spring Session 1.2.0.RELEASE auf einem Spring Boot-Projekt. Dies ist als ein Krieg verpackt und auf Tomcat 8 bereitgestellt.Spring Session funktioniert nicht auf Tomcat 8 bei Verwendung von Tiles - SESSION Cookie ist nicht gesetzt, da die Antwort bereits enthalten ist
Ich habe Spring Session-Dokumentation gefolgt und konfiguriert es richtig. Das Problem besteht darin, dass der Einstiegspunkt für die Anwendung ein Controller ist, der einen Wert für die Sitzung festlegt, der SESSION-Cookie jedoch nicht an den Browser gesendet wird.
Debuggen Ich sehe, dass:
org.springframework.session.web.http.CookieHttpSessionStrategy.onNewSession()
versucht das Cookie zu schreiben:this.cookieSerializer .writeCookieValue(new CookieValue(request, response, cookieValue));
org.springframework.session.web.http.DefaultCookieSerializer.writeCookieValue()
setzt das Cookie in der Antwort:response.addCookie(sessionCookie);
Der Cookie ist nicht wirklich geschrieben. Das zugrunde liegende Antwortobjekt ist
org.apache.catalina.core.ApplicationHttpResponse
. SeineaddCookie()
Methode ist:/** * Disallow <code>addCookie()</code> calls on an included response. * @param cookie The new cookie */ @Override public void addCookie(Cookie cookie) { if (!included) ((HttpServletResponse) getResponse()).addCookie(cookie); }
Das Problem ist, dass included
Attribut, das an einem gewissen Punkt wahr gesetzt ist, von der das Cookie zu verhindern hinzugefügt wird.
Dies geschieht, wenn die JSP (Fliese verwendet wird) bedient wird:
UPDATE:
Dies ist der Moment, wenn die Antwort als eingeschlossene Marke gesetzt wird (bei Standard. Jsp Kachellayout fügt ein Attribut ein:
<tiles:insertAttribute name="header" ignore="false"/>