单点登录流程

有状态登陆
利用session的登陆都算是有状态登陆
服务端保存客服端状态的登陆

无状态登录
服务端不保存客服端的如何状态信息
客服端成功登陆后,服务端返回给客服端一个token,这token本身是一个随机的
唯一的字符串,另外这token中还携带当前用户的各种信息加密,

单点登录可以有状态和无状态
技术方案
有状态登录 Redis+手动实现 Token
无状态登陆 JWT(JOSN Web Token) ,OAuth2

Redis+Token实现思路
1.前端用户拿着用户名/密码去登录,服务端校验用户名密码
2. 如果用户名/密码输入正确,服务端生成一个Token(随机的唯一字符串)返回给前端,同时生成的Token为key,当前用户信息为value,数据保存到Redis中,同时给key设置一个过期时间
3. 如果用户名/密码输入错误,返回登录失败
4. 服务端同时提供一个刷新Token的接口,前端用户拿着旧的Token来(Redis中判断),在旧失效之前,key换取新的Token
5. 前端拿到Token之后,之后发送没次请求,都要携带Token,服务端收到Token之后,去Redis查询,就可以获取到当前用户的各种信息.前端可以在请求拦截器中统一添加Token,后端在拦截器中统一处理请求参数.

数据保存在Token里面,以后不管那个子系统,只要一个登录了,其它都知道登陆,系统都去一个地方拿信息

无状态登录的弊端,Token丢失,注销登陆不好注销. Token都发到客服端了
有状态里面可以直接删除信息

Spring Security+JWT
1.用户登陆成功过,将当前用户信息加密返回给前端
2.前端用户发送其它请求时,需要每次携带Token,JWT负责Token解析判断

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章