更进一步
VMware 提供培训和认证来加速您的进步。
了解更多尊敬的 Spring 社区,
Spring Session MongoDB 2.0.0.M3 已发布。它基于
Reactor Bismuth-M4
在此版本中,添加了几个新功能,以简化在 Spring WebFlux 应用程序中使用它。
@EnableMongoWebSession
public class SpringWebFluxConfig {
}
您只需将 @EnableMongoWebSession
应用于任何 Spring 配置类即可激活 MongoDB 的会话支持。 此外,您必须提供一个 ReactorMongoOperations
Spring bean,但是如果您使用的是 Spring Boot 的 spring-boot-starter-data-mongodb-reactive
starter,则已经提供了该 bean。
@EnableMongoWebSession
具有设置会话范围覆盖的能力,包括 maxInactiveIntervalInSeconds
和 collectionName
,以匹配基于 servlet 的 @EnableMongoHttpSession
注释的相同功能。
注意
@EnableMongoWebSession
本身应用了一个 Spring @Configuration
注释,因此无需将相同的注释应用于您自己的配置类。
默认情况下,Spring Session MongoDB 使用基于 JDK 的序列化策略,并且经过验证可以支持将安全上下文详细信息写入 MongoDB,从而使其与 Spring Security 无缝集成。
正如 最近的 Spring Session 博客文章 中提到的,Spring Session MongoDB(通过 Spring Session 和 Spring WebFlux)利用基于 cookie 的会话处理。 这意味着,当创建一个新会话时,应用程序会将一个 set-cookie SESSION=…
响应标头发送回客户端,并且还会检查传入的 web 请求中是否存在名为 SESSION
的 cookie。 但是使用 Spring Framework 5.0.0.M4,现在有机会从 cookie 切换到基于标头的策略。
要从 cookie 更改为标头,只需将此 Spring bean 添加到您的配置中
@EnableMongoWebSession
public class SpringWebFluxConfig {
@Bean
HeaderWebSessionIdResolver headerBasedSessionIdResolver() {
return new HeaderWebSessionIdResolver();
}
}
创建新会话时,HeaderWebSessionIdResolver
将生成一个 SESSION=…
响应标头,客户端可以获取它。 传入的 web 请求将被解析以查找 SESSION=…
请求标头。
也可以更改标头的名称,如下所示
@EnableMongoWebSession
public class SpringWebFluxConfig {
@Bean
HeaderWebSessionIdResolver headerBasedSessionIdResolver() {
HeaderWebSessionIdResolver resolver = new HeaderWebSessionIdResolver();
resolver.setHeaderName("MyCustomHeaderName"); // Use this instead of SESSION for the header
return resolver;
}
}
有了这一切,您就可以使用 Spring Session MongoDB 进行会话管理,并根据您的需要进行定制!
重要提示
过去,如果 Spring Session MongoDB 在类路径中检测到 Jackson,它将使用基于 Jackson 的序列化。 由于我们已切换到基于 JDK 的序列化,并且没有完全基于类路径设置进行跳转,因此建议任何正在运行的应用程序可能必须删除现有会话并重新初始化。
与此同时,如果您访问项目站点,获取坐标,并在您的 Spring Boot 应用程序中包含版本号,您今天就可以获得这些位。