2019独角兽企业重金招聘Python工程师标准>>>
单点登录(SSO)的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
现在就是用springboot和redis来完成session共享。
1.导入相关依赖。(web和redis相关)
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.session
spring-session-data-redis
2.配置redis
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
}
其中@EnableRedisHttpSession注解,开启redis集中式session管理,把所有的session都存放到了redis中
3.配置application.yml文件,端口的设置以及redis的连接地址和端口号配置
server:
port: 8080
spring:
redis:
host: 192.168.56.150
port: 6379
为了模拟共享,需要开启另个服务,server端口号可以设置8081,其他保持不变
server:
port: 8081
spring:
redis:
host: 192.168.56.150
port: 6379
4.控制层代码
@RestController
@RequestMapping("/admin")
public class RedisController {
@GetMapping("/setSessionId")
public String setredisResult(HttpServletRequest request){
HttpSession session = request.getSession();
session.setAttribute("sessionId","100");
return "设置ok...";
}
@GetMapping("/getSessionId")
public String redisResult(HttpServletRequest request) {
HttpSession session = request.getSession();
String sessid = (String) session.getAttribute("sessionId");
return "sessionId:"+sessid;
}
}
5.运行server8080和server8081
访问http://localhost:8080/admin/setSessionId 设置sessionId
查看redis,可以看到redis中已经存在springsession相关数据,此时也可以看到设置的sessionId
访问另一个服务http://localhost:8081/admin/getSessionId
不同服务sessionId共享成功。
以上就是session共享简单的小例子。