单点登录三种常见方式
一、session广播机制
简单来说,就是session复制
二、cookie + redis
- 在项目任何一个模块进行登录,登录之后,把数据放到两个地方
(1)redis:key:生成唯一随机值(ip、用户id等),value:用户数据。
(2)cookie:把redis中生成的key值放到cookie里面 - 访问项目其他模块,发送请求带着cookie发送,获取cookie值,拿着cookie进行后续操作。
(1)从cookie中获取值,到redis中进行查询,根据key进行查询,如果查到数据就是登录状态。
三、使用token
- 在项目某个模块进行登录,登录之后,按照规则生成字符串,把登录后的用户包含到生成字符串里面,把字符串返回。
(1)可以把字符串通过cookie返回
(2)把字符串通过地址栏返回 - 再去访问其他模块,每次访问前端在request header里面添加一个token字段,token则是登陆后返回的字符串。后端通过获取请求头的token字段,根据字符串获取用户信息,如果可以获取到,则就是登录状态。
- Jwt生成的字符串包含三部分
- Jwt头信息
- 有效载荷,包含主体信息(用户信息)
- 签名哈希,防伪标志