【问题标题】:Using SpringSessionBackedSessionRegistry with Redis Session Repository将 SpringSessionBackedSessionRegistry 与 Redis 会话存储库一起使用
【发布时间】:2017-05-20 18:32:21
【问题描述】:

我在我的应用程序中使用 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>

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

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

SpringSessionBackedSessionRegistry(FindByIndexNameSessionRepository<? extends ExpiringSession> sessionRepository) 

【问题讨论】:

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


    【解决方案1】:

    SpringSessionBackedSessionRegistry 应该将FindByIndexNameSessionRepository&lt;? extends ExpiringSession&gt; 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);
        }
    
    }
    

    【讨论】:

    • 我仍然收到错误消息“请考虑在您的配置中定义一个 'org.springframework.session.FindByIndexNameSessionRepository' 类型的 bean。”
    猜你喜欢
    • 2018-10-06
    • 2012-11-12
    • 2021-05-22
    • 2014-08-24
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多