领先一步
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 切换到基于 header 的策略。
要从 cookie 切换到 header,只需将此 Spring bean 添加到您的配置中
@EnableMongoWebSession
public class SpringWebFluxConfig {
@Bean
HeaderWebSessionIdResolver headerBasedSessionIdResolver() {
return new HeaderWebSessionIdResolver();
}
}
创建新会话时,HeaderWebSessionIdResolver 将生成一个 SESSION=… 响应头供客户端获取。传入的 Web 请求将被解析以查找 SESSION=… 请求头。
也可以更改 header 的名称,如下所示
@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 应用程序中包含版本号*来获取最新版本。