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

一、分布式session问题

java分布式单点登录_高级-11分布式session和单点登录_第1张图片

两个方面的问题。

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

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

java分布式单点登录_高级-11分布式session和单点登录_第2张图片

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

统一存储,SpringSession

java分布式单点登录_高级-11分布式session和单点登录_第3张图片

java分布式单点登录_高级-11分布式session和单点登录_第4张图片

java分布式单点登录_高级-11分布式session和单点登录_第5张图片

java分布式单点登录_高级-11分布式session和单点登录_第6张图片

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

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

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

java分布式单点登录_高级-11分布式session和单点登录_第7张图片

二、SpringSession

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

java分布式单点登录_高级-11分布式session和单点登录_第8张图片

java分布式单点登录_高级-11分布式session和单点登录_第9张图片

java分布式单点登录_高级-11分布式session和单点登录_第10张图片

三、单点登录

java分布式单点登录_高级-11分布式session和单点登录_第11张图片

3.1 简单Demo

更改host文件,模拟多域名环境

de98aad7ed82caf02e193a7b263ddeae.png

打包启动服务

// 在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

java分布式单点登录_高级-11分布式session和单点登录_第12张图片

3.2 单点登录流程

java分布式单点登录_高级-11分布式session和单点登录_第13张图片

四、附录

// 获取session和cookie的方法

public void test (HttpSession httpSession, @CookieValue(value = "sso_token",required = false) String sso_token){}

// 放在session中的只是一串令牌,在后端页面(thymeleaf、jsp)中可以直接调用session.value

// 但是在前后端分离项目中不能直接获取,只能通过接口向后端查询

你可能感兴趣的:(java分布式单点登录)