概念
-
SSO(Single Sign On),在分布式架构中,用户只需登录一次,就可访问其他相关的系统。比如登录百度贴吧后,再去访问百度网盘就不需要登录了。
实现方式
session广播机制
-
用户第一次在任何一个模块登录时,用session广播机制把session复制到其他模块
-
用户再次登录其他模块时,就可直接本模块中的session判断用户是否登录
-
缺点:复制session,占用很大资源,一般不使用
cookie+redis
-
用户第一次在任何一个模块登录时
-
在redis中存入key为唯一随机值(自定义规则),value为用户数据
-
在cookie中存入在redis中生成的key
-
-
用户再次登录其他模块时,发送请求时会带着cookie进行发送,用此cookie到redis中进行查询;若查询出数据表示已登录,若没有数据表示要重新登录
token
-
用户第一次在任何一个模块登录时,按照自定义的规则(盐值)生成字符串token,把token返回给前端存入cookie或者存入地址栏
-
用户再次登录其他模块时,每次访问用cookie带着token或者在地址栏中带着token,后端可根据发送来的token判断是否登陆