单点登录:在一个模块登录了,其它模块就不需要再登录了
常见的实现方式:
1.session广播机制:session复制
2.使用cookie+redis实现:(1)redis:key:唯一随机值 value:用户数据
(2)cookie:把redis里面生成的key值放到cookie里面
访问项目中其它模块时,发送请求带着cookie进行发送。获得cookie值,拿着cookie做事情
从cookie获取值,到redis中进行查询。根据key进行查询。如果能查询到数据就是登录状态。
3.使用token实现:(令牌)token是按照一定的规则生成的字符串。字符串可以包含用户信息
在项目的某个模块进行登录,登录之后,按照规则生成字符串,把登录之后的用户信息包含到生成的字符串里面。把字符串返回(可以通过cookie返回,或者通过地址栏返回)
再去访问项目的其它模块。每次访问都在地址栏带着生成的字符串,在访问模块里面获取地址栏字符串,根据字符串获取用户信息。如果可以获取到,就是登录状态。
token的规则是怎么样的,不一定。一般采用通用的规则(官方规则)JWT
JWT给我们规定好了规则。使用JWT规则可以生成字符串,包含了用户信息
JWT生成的字符串包含三个部分:
(1)JWT头信息
(2)有效载荷:包含用户信息
(3)签名哈希:字符串防伪标志
1.在common中引入依赖
2.复制JWT工具类