一、为什么有单点登录?
我们在真正的项目开发中一个项目往往是大型的,这时候会把一个单系统拆分成多个子系统,比如淘宝和天猫,虽然是两个系统,但隶属于一个公司开发的产品,当我们登录其中一个时,另一个也会登录。
二、单点登录的概念?
那么就引出了单点登录(Single Sign On)的概念:在多个系统中,用户只需要登录一次,即可访问所有相互信任的应用系统。
三、实现方式?
(1)共享Session(分布式Session共享解决方案)
使用了基于Redis的Session共享方案。将Session存储于Redis上,然后将整个系统的全局Cookie Domain设置于顶级域名上,这样SessionID就能在各个子系统间共享。
(2)Cooike
用cookie作为媒介存放用户凭证,用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户
(3)使用token实现
1.在项目某个模块进行登录,登录之后,按照规则生成字符串,把登陆之后用户包含到生成字符串里面,把字符串返回
(1)可以把字符串通过cookie返回
(2)把字符串通过地址栏返回
2.再去访问项目其他模块,每次访问在地址栏带着生成的字符串,在访问模块里面获取地址字符串,根据字符串获取用户信息。如果可以获取到就能登录。