单点登录三种常见方式

一、session广播机制

简单来说,就是session复制

二、cookie + redis

  1. 在项目任何一个模块进行登录,登录之后,把数据放到两个地方
    (1)redis:key:生成唯一随机值(ip、用户id等),value:用户数据。
    (2)cookie:把redis中生成的key值放到cookie里面
  2. 访问项目其他模块,发送请求带着cookie发送,获取cookie值,拿着cookie进行后续操作。
    (1)从cookie中获取值,到redis中进行查询,根据key进行查询,如果查到数据就是登录状态。

三、使用token

  1. 在项目某个模块进行登录,登录之后,按照规则生成字符串,把登录后的用户包含到生成字符串里面,把字符串返回。
    (1)可以把字符串通过cookie返回
    (2)把字符串通过地址栏返回
  2. 再去访问其他模块,每次访问前端在request header里面添加一个token字段,token则是登陆后返回的字符串。后端通过获取请求头的token字段,根据字符串获取用户信息,如果可以获取到,则就是登录状态。
  • Jwt生成的字符串包含三部分
    • Jwt头信息
    • 有效载荷,包含主体信息(用户信息)
    • 签名哈希,防伪标志

评论