高级-11分布式session和单点登录

一、分布式session问题

两个方面的问题。

1、集群下多个服务节点之间session不同步问题(多个服务器之间session存储不一样)

2、分布式下多个服务之间session不共享问题(浏览器无法拿到另一个域名下的session)

解决方案① 集群下服务节点间session不同步问题

统一存储,SpringSession

解决方案② 分布式下多个服务间session不共享问题

放大作用域(放在统一域名下)

  • 没有统一域名的就不行了,比如网易游戏和网易邮箱无法放在同一个域名下

二、SpringSession

>>>官方文档<<<

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

三、单点登录

3.1 简单Demo

>>> 于雪里SSO <<<

更改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 单点登录流程

四、附录

// 获取session和cookie的方法
public void test (HttpSession httpSession, @CookieValue(value = "sso_token",required = false) String sso_token){}

// 放在session中的只是一串令牌,在后端页面(thymeleaf、jsp)中可以直接调用session.value
// 但是在前后端分离项目中不能直接获取,只能通过接口向后端查询
posted @ 2020-12-24 11:53  这杯Java有毒  阅读(242)  评论(0)    收藏  举报