领先一步
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
启动器,则已提供此 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 应用程序中包含版本号,则可以立即获取这些内容。