单点登录实现session共享有很多方法,主要就是session记录用户的登录票据。这里简单的介绍三种方式,并说明场景和优劣,本人推荐第三种。
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
配置redis
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
spring.session.store-type=redis
设置session数据过期时间
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 160)
public class RedisSessionConfig {
}
简单的controller测试
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@RestController
public class RedisSessionApi {
@RequestMapping(value = "/redisSessionApi")
public String redisSessionApi(HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
String id = session.getId();
StringBuffer requestURL = request.getRequestURL();
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(id)
.append("~~~~~~~~~~")
.append(requestURL);
return stringBuffer.toString();
}
}