mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-10-03 15:59:31 +00:00
Fix Partitioned session cooke attribute configuration with Tomcat
Fixes gh-50201
This commit is contained in:
+1
-3
@@ -97,9 +97,7 @@ public final class ServletContextInitializers implements Iterable<ServletContext
|
||||
map.from(cookie::getHttpOnly).to(config::setHttpOnly);
|
||||
map.from(cookie::getSecure).to(config::setSecure);
|
||||
map.from(cookie::getMaxAge).asInt(Duration::getSeconds).to(config::setMaxAge);
|
||||
map.from(cookie::getPartitioned)
|
||||
.as(Object::toString)
|
||||
.to((partitioned) -> config.setAttribute("Partitioned", partitioned));
|
||||
map.from(cookie::getPartitioned).to((partitioned) -> config.setAttribute("Partitioned", ""));
|
||||
}
|
||||
|
||||
@Contract("!null -> !null")
|
||||
|
||||
+16
-2
@@ -881,10 +881,24 @@ public abstract class AbstractServletWebServerFactoryTests {
|
||||
assertThat(sessionCookieConfig.getPath()).isEqualTo("/testpath");
|
||||
assertThat(sessionCookieConfig.isHttpOnly()).isTrue();
|
||||
assertThat(sessionCookieConfig.isSecure()).isTrue();
|
||||
assertThat(sessionCookieConfig.getAttribute("Partitioned")).isEqualTo("true");
|
||||
assertThat(sessionCookieConfig.getAttribute("Partitioned")).isEqualTo("");
|
||||
assertThat(sessionCookieConfig.getMaxAge()).isEqualTo(60);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sessionCookiePartitionedAttribute() throws Exception {
|
||||
ConfigurableServletWebServerFactory factory = getFactory();
|
||||
factory.getSettings().getSession().getCookie().setPartitioned(true);
|
||||
factory.addInitializers(new ServletRegistrationBean<>(new CookieServlet(false), "/"));
|
||||
this.webServer = factory.getWebServer();
|
||||
this.webServer.start();
|
||||
ClientHttpResponse clientResponse = getClientResponse(getLocalUrl("/"));
|
||||
List<String> setCookieHeaders = clientResponse.getHeaders().get("Set-Cookie");
|
||||
assertThat(setCookieHeaders).satisfiesExactlyInAnyOrder(
|
||||
(header) -> assertThat(header).startsWith("JSESSIONID=").contains("; Partitioned"),
|
||||
(header) -> assertThat(header).isEqualTo("test=test"));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "OMITTED")
|
||||
void sessionCookieSameSiteAttributeCanBeConfiguredAndOnlyAffectsSessionCookies(SameSite sameSite) throws Exception {
|
||||
@@ -1212,7 +1226,7 @@ public abstract class AbstractServletWebServerFactoryTests {
|
||||
assertThat(sessionCookieConfig.isHttpOnly()).isTrue();
|
||||
assertThat(sessionCookieConfig.isSecure()).isTrue();
|
||||
assertThat(sessionCookieConfig.getMaxAge()).isEqualTo(60);
|
||||
assertThat(sessionCookieConfig.getAttribute("Partitioned")).isEqualTo("false");
|
||||
assertThat(sessionCookieConfig.getAttribute("Partitioned")).isEqualTo("");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user