Spring Boot 2 - 为不同端点配置不同的 spring session 存储类型

问题描述 投票:0回答:0

我正在开发一个库(基于 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
一起使用?

spring spring-boot spring-session
© www.soinside.com 2019 - 2024. All rights reserved.