单点登录(SSO)
单点登录(Single Sign On),常用于微服务架构中,每个模块之间相互独立,实现单点登录,可以不用频繁二次登录,方便使用。
常见的单点登录有三种方式:
-
第一种:session广播机制实现
- session复制不适合多模块,造成资源浪费
-
第二种:使用cookie + redis 实现
- 1、在项目中任何一个模块进行登录,登录之后,把数据放到两个地方
- (1)redis:在key存放生成唯一随机值(ip、用户id等等),在value中存放用户数据
- (2)cookie:把redis里面生成key值放到cookie里面
- 2、访问项目中其他模块,发送请求带着cookie进行发送,获取cookie值
- (1)把cookie获取值到redis进行查询,根据key进行查询,如果查询到数据就是登录
-
第三种:使用token实现
- token:按照一定规则生成字符串,字符串可以包含用户信息
- 1、在项目某个模块进行登录,登陆之后,按照规则生成字符串,把登录之后用户包含到生成字符串里面,把字符串返回
- (1)、可以把字符串通过cookie返回
- (2)、把字符串通过地址栏返回
- 2、再去访问项目其他模块,每次访问在地址栏带着生成字符串,在访问模块里面获取地址栏字符串,根据字符串获取用户信息,如果可以获取到字符串就是登录。