我正在开发一个库(基于 Spring Boot 2.7),它提供了一个带有身份验证支持的控制台(各种管理控制台)。该控制台将在
/console
上下文中公开。所以,我有以下过滤器链配置。
@Bean
@Order(-1)
public SecurityFilterChain consoleFilterChain(HttpSecurity http) throws Exception {
http.antMacher("/console/**")
.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and()
.authenticationManger(customConsoleAuthenticationManager(http))
.formlogin()
.and()
.logout().permitAll();
return http.build();
}
过滤器仅限于
/console/**
端点,以便客户端应用程序可以为非控制台端点实现它自己的过滤器。
不过,对于控制台,我需要一个数据库支持的会话(以便它跨多个容器工作)。因此,我使用
spring-session-jdbc
和 spring.session.store-type
设置为 jdbc
在 Spring 的环境中设置(通过 AppEnvironmentPostProcessor
)。
问题是,如果客户端应用程序选择使用 Spring Session,它将被迫使用数据库会话(或覆盖该属性,在这种情况下,控制台登录将中断)。
因此,我需要为控制台端点本身配置会话存储类型(最好是其他属性,如表名)。
本文档部分讨论了自定义会话存储,但我将如何使其与
spring-session-jdbc
一起使用?