【发布时间】:2021-08-31 23:31:13
【问题描述】:
我正在尝试使用WebSessionIdResolver 更改我的 springboot 应用程序的相同站点属性,如下所述:https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-webflux-custom-cookie.html
@Configuration
public class CookieConfiguration {
@Bean
public WebSessionIdResolver webSessionIdResolver() {
CookieWebSessionIdResolver resolver = new CookieWebSessionIdResolver();
resolver.addCookieInitializer(builder -> builder.sameSite("None"));
return resolver;
}
}
我不明白发生了什么,在调试时我可以看到 bean 正在初始化,但是在每个 http 调用中,都会使用默认的 sameSite 属性“Lax”写入会话 cookie,并且默认的 CookieWebSessionIdResolver.cookieInitializer 为空。
【问题讨论】:
-
这是为了使用 Spring Session 编写它的 cookie,而不是 Spring WebFlux 编写所有其他 cookie。
-
是的,这就是我想要做的:更改春季会话 cookie。
-
这不适用于 Spring Session not Spring WebFlux。因此,除非您将 Spring Session 与 Spring WebFlux 一起使用,否则这是行不通的。
-
啊好吧,我只需要将 spring 会话添加到应用程序 pom.xml 吗?或者有没有办法只使用 webflux/spring 安全性来做到这一点?
-
没有。如果您不使用 Spring Session,则此配置将不起作用。我建议您阅读 Spring Session 是什么(您可能没有使用它,您需要询问)。所以这个配置,也没有添加依赖,将使它工作。您必须配置 Spring WebFlux not Spring Session。您正在执行后者,并希望它适用于前者编写的 cookie,但这是行不通的。
标签: spring-boot cookies session-cookies spring-webflux