【发布时间】:2020-07-06 15:07:00
【问题描述】:
我正在尝试将基于 Servlet 的应用程序迁移到 Webflux,但遇到了会话管理问题。我一直在使用带有 Jdbc 实现(由 PostgreSQL 支持)的 Spring 会话,我的配置如下所示:
@Configuration
@EnableSpringHttpSession
public static class SessionConfig {
@Bean
public MapSessionRepository sessionRepository() {
return new MapSessionRepository(new ConcurrentHashMap<>());
}
}
现在,正如我对documentation 的正确理解,基于servlet 的HttpSession 已被WebSession 替换,我需要提供如下配置:
@Configuration
@EnableSpringWebSession
public class SessionConfig {
@Bean
public ReactiveSessionRepository sessionRepository() {
return ???
}
}
但我找不到对关系数据库的任何支持,因为org.springframework.session.ReactiveSessionRepository(来自"org.springframework.session:spring-session-core:2.2.2.RELEASE")只有 2 个实现:
- 基础一-
ReactiveMapSessionRepository - 基于Redis的一种-
ReactiveRedisSessionRepository
但不幸的是,它们不能满足我的要求。
我也找不到任何关于"org.springframework.session:spring-session-jdbc" 对WebSessions 的支持和新的 R2DBC 的注释。
是否可以通过关系数据库(例如 Postgres)支持 WebSessions,如果可以,我该如何实现(我应该使用哪个实现)?我知道存在一些问题对关系数据库的非阻塞操作支持,但我想知道我是否遗漏了一些东西,但它仍然是可能的。
提前致谢
【问题讨论】:
标签: spring-security spring-session