spring - 将 SpringSessionBackedSessionRegistry 与 Redis session 存储库一起使用

标签 spring spring-boot spring-security spring-session

我在我的应用程序中使用 Spring Security 和 Spring Session (v1.3.1)。

我想使用 SpringSessionBackedSessionRegistry作为我的 Session Registry 和 Redis 作为我的 Session 存储库。

SpringSessionBackedSessionRegistry 的构造函数如下:

SpringSessionBackedSessionRegistry(FindByIndexNameSessionRepository<ExpiringSession> sessionRepository) 

Redis 存储库,RedisOperationsSessionRepository实现:

FindByIndexNameSessionRepository<org.springframework.session.data.redis.RedisOperationsSessionRepository.RedisSession>

那么,我如何构造 SpringSessionBackedSessionRegistry 的实例?给定 RedisOperationsSessionRepository 的实例?

为什么 SpringSessionBackedSessionRegistry 的构造函数是不是:

SpringSessionBackedSessionRegistry(FindByIndexNameSessionRepository<? extends ExpiringSession> sessionRepository) 

最佳答案

你说得对SpringSessionBackedSessionRegistry应该采取FindByIndexNameSessionRepository<? extends ExpiringSession> sessionRepository作为构造函数参数。

我已经打开了 PR 来解决这个问题,你可以跟踪它 here .

与此同时,您可以使用原始 FindByIndexNameSessionRepository在您的配置中配置SpringSessionBackedSessionRegistry .这是一个例子:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private FindByIndexNameSessionRepository sessionRepository;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .and()
            .sessionManagement()
                .maximumSessions(1)
                .sessionRegistry(sessionRegistry());
    }

    @Bean
    @SuppressWarnings("unchecked")
    public SpringSessionBackedSessionRegistry sessionRegistry() {
        return new SpringSessionBackedSessionRegistry(this.sessionRepository);
    }

}

关于spring - 将 SpringSessionBackedSessionRegistry 与 Redis session 存储库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498183/

相关文章:

java - SecurityFilterChain Bean 不保护应用程序

spring-boot - OAuth/ token 上的 Spring Boot REST 服务选项 401

logging - 如何让 Spring Boot 使用 log4j.xml 配置文件?

java - 应用程序上下文中某些bean的依赖关系形成循环:

spring-boot - 如何在 Spring 中添加 HTTP “Feature-Policy” header

java - 无法找到对象标识 'org.springframework.security.acls.domain.ObjectIdentityImpl 的 ACL 信息

Spring Security 3.2 CSRF 禁用特定 URL

java - 我们给 spring 注解起个名字是有原因的吗?

java - Spring 启动执行: org. apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;V

java - Hibernate 和 Postgres 位置参数不匹配