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

一、分布式session问题

464a112facf40b2e02ce3da7e1bbf9d5.png

两个方面的问题。

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

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

e1b1f49324729a6be0e08a39c17bb170.png

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

统一存储,SpringSession

26ef5f97d01f329c2445e938cb4b0e9c.png

7a4c7e7875bda8d15e41327469f0e048.png

38432dc4dc227c131766c391f188914f.png

d492e796601db94406818bc2b7cefdf1.png

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

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

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

c7212c9e23e4bab59a2f0ed7bb07fcee.png

二、SpringSession

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

dcf2cdb10d7625fa98ca18be459af2a2.png

39b7b54f523344ce0e43710f83d9a6c2.png

02f7edda1923d3db4451e99c94a471e0.png

三、单点登录

f3b235b152b4786f43665668d6a17016.png

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

b308294ba1725998452084eb87992e08.png

3.2 单点登录流程

61e2930148e86f34803d749a65373d44.png

四、附录

// 获取session和cookie的方法

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值