springsecurity做权限验证,采用默认的session管理,在系统重新部署启动之后,之前登录的用户session无法被保存,需要用户重新登录,这里使用redis来做session存储,系统重启之后,session还在,无需重新登录。
使用redis做session存储,本身配置比较简单,但是这里和struts2结合,就需要注意。
springSessionRepositoryFilter的映射配置需要在springsecurity和struts2的filter前面。要不然,还是不会生效。
首先需要增加spring-session-data-redis的依赖。
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
其次,需要配置redis连接和redis session相关的bean,让spring去管理redis的连接。
spring-redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="0" />
<property name="maxTotal" value="20" />
<property name="maxWaitMillis" value="1000" />