不能自动配置会话存储库(会话存储类型为“redis”)

Posted

技术标签:

【中文标题】不能自动配置会话存储库(会话存储类型为“redis”)【英文标题】:No session repository could be auto-configured(session store type is 'redis') 【发布时间】:2020-12-05 17:49:59 【问题描述】:

我正在关注该教程第三部分的link 中的弹簧安全教程。我必须使用 redis 将会话信息传递给资源后端。

这是我的 applicaiton.yml 文件:

server:
  port: 9000
security:
  sessions: NEVER
spring:
  session:
    store-type: redis
  redis:
    host: localhost
    port: 6379
logging:
  level:
    org.springframework:
      security: DEBUG
      session: TRACE

另外,我使用 HeaderHttpSessionStrategy bean 作为会话策略

@Bean
HeaderHttpSessionStrategy sessionStrategy() 
    return new HeaderHttpSessionStrategy();

我的pom找不到相关的类声明给我

包 org.springframework.session.web.http 不存在

上面的错误这里是我的 pom.xml 文件。

<properties>
    <java.version>14</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

我是 spring 和 spring-security 世界的新手。有什么建议可以解决这个问题吗?

编辑:

在 pom 中添加新的依赖项后

    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session</artifactId>
        <version>1.3.5.RELEASE</version>
    </dependency>

我解决了上述问题,但这次给我带来了新的问题:

无法自动配置会话存储库,请检查您的配置(会话存储类型为“redis”

我在 application.yml 上的 redis 配置在上面。我在docker上使用redis。我的 docker yml 是:

 redis:
     image: redis
     ports:
         - "6379:6379"

【问题讨论】:

你做了什么来尝试找到包含该包的 maven 工件? 你好我尝试添加 org.springframework.sessionspring-session1.3.5.RELEASE 这个依赖之后我可以添加相关的类,但这一次给我redis的配置错误。 那就问一个关于redis问题的问题,如果不能解决。听起来好像您已经解决了这个问题。 【参考方案1】:

我最近收到此错误。我使用的是 Spring Boot 2.4.0。我已经为 Spring Session 添加了依赖,但忘记为 Jedis 添加一个。

        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

当我第一次部署时,它给了我信息:

No session repository could be auto-configured, check your configuration (session store type is 'redis')

在我添加此依赖项并重建我的 JAR 后,一切正常。

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

也许这会帮助别人。

【讨论】:

您好,Daniel,目前我没有继续该项目,但当我这样做时,我会尝试并回复您,谢谢您的回答。

以上是关于不能自动配置会话存储库(会话存储类型为“redis”)的主要内容,如果未能解决你的问题,请参考以下文章

php项目负载均衡实现redis存储session会话共享

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

redis缓存服务器(Nginx+Tomcat+redis+MySQL实现session会话共享)

OBIEE 存储库变量和会话变量之间的区别

Bref PHP 将会话存储在 redis 中但无法读取

我应该/如何将我的 JWT 令牌存储在 redis 中以便我可以看到当前的用户会话?