讲解单点登录前,我们需要知道原先我们(单一服务器)普通登录的流程,以前我们登录之后就会在服务器端把我们的用户数据存入session,下次我们判断是否登录时,只需要从session中获取数据,即可判断当前是否登录,但随着网络的发展,项目变得更大,更负责,我们的项目被拆分成了不同的模块,放在了不同的服务器上,所以,你这个模块登录后,这个模块的服务器内的session中有你的信息,而其余模块中却没有,你还得再次登录,为了解决这个问题SSO出现了,SSO实现了一次登录,处处访问。
SSO 有三种实现方式
1 session 广播机制,就是你在这个模块登录完之后,服务器将其内的seesion信息传递给其他模块的服务器,做到一致性
2 cookie + redis ,你在这个模块中登录之后,就把数据放在两个地方,(1)redis,在key生成唯一随机值(用户id),value:用户数据,(2)在cookie保存redis生成的key值。当你访问其他模块时,就带着cookie进行访问,从redis中获取cookie中的key进行查询,用户是否登录。
3 使用token ,那么什么是token呢?token可以简单的理解为带着客户信息的字符串。在项目某个模块进行登录,登录之后,按照规则生成包含用户信息的字符串,把字符串放到请求头中,那么我们访问其他模块时就从请求头中获取token,解析之后检验是否登录。
下面我通过代码加解析的过程,详细给大家分析一波使用token的SSO过程



667

被折叠的 条评论
为什么被折叠?



