前言:小编引入的图片和文字描述都是来自于尚硅谷的视频讲解,在此感谢尚硅谷的老师
项目地址(gitee): https://gitee.com/qinenqi/online
springboot整合单点登录
online-sso-server 单点登录服务端
online-sso-client 单点登录客户端
online-sso-client2 单点登录客户端
我本地整理和图片稍有出入,请根据自己的实际情况进行处理
- 访问不受保护的资源(http://127.0.0.1:9007/helloController/hello)正常, 访问受保护的资源(http://127.0.0.1:9007/helloController/employees),
- online-sso-client服务判断是否登录,先判断tokenx信息(拿着token信息查询登录服务器,验证先信息,此时不再展开了),然后判断当前会话是否有loginUser信息,如果有,则说明已经登录则直接返回响应的信息;如果没有loginUser信息,则说明还未登录,需要进行登录,通过 return “redirect:” + ssoServerUrl +"?returnUrl=" + returnUrl; 向浏览器响应需要重定向的信息。
- 浏览器收到服务器的信息
- 浏览器根据重定向信息,访问登录服务器的登录信息(http://127.0.0.1:9006/loginController/login.html)
- 登录服务器接受登录请求,根据cookie信息进行判断,判断cookie是否携带了sso_token信息,如果有则让浏览器去请求上个客户端的请求,如果没有则返回登录页面
- 浏览器展示登录页面
- 输入账号密码进行登录
- 提交登录请求
- 登录服务器处理处理登录请求,验证用户名和密码,验证不通过,重新响应登录页面,验证通过,响应浏览器。在登录成功之后需要做一些准备(向redis中存放redis信息、向cookie中放入信息、重定向时带着token信息)
- 浏览器收到响应
- 浏览器根据重定向信息,跳转到客户端的请求(http://127.0.0.1:9007/helloController/employees)
- 浏览器访问客户端2(http://127.0.0.1:9008/helloController/employees),原理一致