这节课开始带大家设计实现一个套支持多平台登录,Token泄露检测、同平台多设备登录互踢功能的用户认证体系,这套用户认证体系既可以在你未来开发产品时直接应用,也可以在其基础上根据需要扩展出其他功能.它会作为我们后面商城App后端服务的的用户认证体系,同时又足够独立,能拿到自己的项目中去快速把用户认证给搭建起来。
说到Token,很多人一开始想到的可能是JWT -- JSON Web Token。 JWT因为其本质是存储在客户端cookie中,发布出去后服务端无法对其进行主动过期等控制,所以应用场景跟这里介绍的用户认证体系不一样,我们今天介绍的这套用户认证体系,在用户体验、安全性和稳定性上都会更完善,更适合在拥有C端用户的产品上或者是拥有多个产品线的公司级项目中应用。
想要设计出一个能满足企业级项目需求的用户认证体系,我们需要从用户体验、安全和稳定性上来考虑,同时也要收集产品经理、前端开发对其在功能性上的要求,不能为了只考虑稳定、高效而忽略了用户体验。
从功能的用户体验、安全性和稳定性来看,通常一个足够支撑企业级项目的认证系统要满足一下要求:
为什么所有商用项目都需要用户认证体系呢?最简单的一个原因是:因为用户的ID不能外漏。在产品内部与用户相关的数据资产都是使用用户ID标记用户归属的,一旦外漏造成的风险和损失不可预估。
在我们设计的认证体系中,用户登录后返回给前端以下Token信息
主要考虑下面三个因素:
服务端 Token 存储的信息(服务端记录的信息)如下:
用户登录授权,在给用户发放Token的同时服务端会存储三份信息,用于会话管理和认证。
它们存储的主要信息和其存储方式如下:
上面我们一直提到了用户登录平台Platform、SessionId ,它们分别是什么呢?
Token的验证和刷新流程给大家准备了详尽的UML活动图和案例进行讲解