【发布时间】:2016-05-20 20:09:27
【问题描述】:
我正在寻求帮助来配置 Spring Boot 以在不使用 Spring Security 的情况下保持 Spring Session。
我从 HttpSession JDBC Spring Boot sample app 开始,为 Spring Boot 应用程序保留一个 Spring Session。但是,这使用 Spring Security。删除 Spring Security 时,会话将停止在 H2 数据库中持久化。 XML config 和 Java config 示例应用程序不使用 Spring Security。因此,不是要求。
guide 声明 springSessionRepositoryFilter 将创建 Spring Session。但是,在删除 Spring Security 并调试此过滤器 (SessionRepositoryFilter) 后,传递给 SessionRepositoryFilter$SessionRepositoryRequestWrapper.getSession(boolean) 的布尔值永远不会设置为 true。因此,Spring Session 永远不会被创建和持久化。
对于在没有 Spring Security 的情况下为 Spring Boot 应用持久化 Spring Session 所需的额外配置有何建议?
这里是相关的类,pom.xml,和application.property文件:
@SpringBootApplication
public class SbWebSessionJdbcApplication {
public static void main(String[] args) {
SpringApplication.run(SbWebSessionJdbcApplication.class, args);
}
}
@EnableJdbcHttpSession
public class HttpSessionConfig {
}
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-jdbc</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</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>
application.properties
spring.thymeleaf.cache=false
spring.template.cache=false
spring.datasource.schema=classpath:org/springframework/session/jdbc/schema-h2.sql
spring.h2.console.enabled=true
logging.level.org.springframework.web=DEBUG
【问题讨论】:
标签: spring-boot spring-jdbc spring-session