java - 无法自动配置 session 存储库( session 存储类型为 'redis' )

标签 java session spring-security redis

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

这是我的 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 作为 session 策略

@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>

我解决了上面的问题,但这次给我打了一个新的,它说:

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

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

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

最佳答案

我最近遇到了这个错误。我使用的是 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>

也许这会对其他人有所帮助。

关于java - 无法自动配置 session 存储库( session 存储类型为 'redis' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63436508/

相关文章:

python - Django 1.5 session 变量在 Post-Redirect-Get 后不显示

c# - 在 ASP.NET Core 3.1 中创建 session

php - 用于测试目的的对本地主机的简单 session 固定攻击

java - Spring 4.0 Oauth 2 不工作

java - 为什么 default-target-url 和 AJAX 调用总是得到 "GET: 403 Forbidden "?

java - Primefaces selectOneMenu 转换器调用但不工作

java - 在 Eclipse 的自动完成建议中选择方法的排序顺序?

java - 隐式 QueryStringBindable java.util.List[models.InputTimeSheetDataStore]

Java-如何为 JFrame 设置 setToolTipText

spring - 如何在 Spring Security 中获取 AccessDeniedException 的 'reason'/原因?