单点登录常用实现方式
1. session复制
当在一个模块进行登录后,存储到session中,并将session的值通过复制到其他的微服务模块中,实现每个模块中都有该session,当访问其他模块时,通过取出session中的登录信息,实现单点登录操作。
但是该方法有很大的缺点,当服务模块数比较多的时候,会很浪费资源,保存了很多的重复数据。
2. cookie+redis方式
当用户在一个模块登录后,将信息存储到两个地方。
(1)当在一个模块登录后,将登录信息先存储到redis中,存储方式如下:
key-value形式:
key:生成唯一随机值(ip,用户id等)
value:用户数据
(2)cookie:将redis中生成的随机key值存储到cookie中
当访问其他模块时,发送请求会带着cookie进行发送,获取cookie值。将获取到的cookie与redis中的key进行查询,如果查询到数据就是登录。
3.token方式
token:按照一定规则生成的字符串,字符串可以包含用户信息。
在一个模块登录之后,按照指定规则生成字符串,将用户信息包含在字符串中,把字符串返回:
(1):可以将返回字符串放入cookie中
(2):也可以将字符串放在地址栏中
当在访问其他模块时,或携带字符串,然后获取到字符串,进行解析,获取用户信息,如果获取成功,则表示登录