高级-11分布式session和单点登录
一、分布式session问题

两个方面的问题。
1、集群下多个服务节点之间session不同步问题(多个服务器之间session存储不一样)
2、分布式下多个服务之间session不共享问题(浏览器无法拿到另一个域名下的session)

解决方案① 集群下服务节点间session不同步问题
统一存储,SpringSession




解决方案② 分布式下多个服务间session不共享问题
放大作用域(放在统一域名下)
- 没有统一域名的就不行了,比如网易游戏和网易邮箱无法放在同一个域名下

二、SpringSession
maven依赖-->指定session存储(redis)-->配置redis链接-->注解开启SpringSession功能



三、单点登录

3.1 简单Demo
更改host文件,模拟多域名环境

打包启动服务
// 在pom文件所在最外层(三个小服务外面)路径下打包
// 清理-打包 跳过测试
$ mvn clean package -Dmaven.skip.test=true
// 在小服务target目录下jar文件处启动,指定端口
$ java -jar xxl-sso-server-1.1.1-SNAPSHOT.jar --server.port=8081
// 打包安装到仓库
$ mvn install

3.2 单点登录流程
.png)
四、附录
// 获取session和cookie的方法
public void test (HttpSession httpSession, @CookieValue(value = "sso_token",required = false) String sso_token){}
// 放在session中的只是一串令牌,在后端页面(thymeleaf、jsp)中可以直接调用session.value
// 但是在前后端分离项目中不能直接获取,只能通过接口向后端查询

浙公网安备 33010602011771号