1.需求分析

①同一端同一个用户只能允许在一个地方登陆,多次登录需要实现登录顶替
②不同端的情况下,部分终端可以同时登陆,比如:钉钉端和web端可以同时在线的,但是有些端是不可以同时在线的,比如:Android端和IOS端。(这是我自己认为的一个需求,如果是只允许一个用户在一个端的一处登录,也是可以实现的)
③可以刷新token
④保证接口代码不做任何的改动,功能的可用性
⑤保证前端的代码不做任何变动

2.概要设计

身份认证开发 - 图1

3.详细设计

3.1令牌的发布

身份认证开发 - 图2

3.2携带令牌请求

身份认证开发 - 图3

3.2.1请求其他接口

3.2.2请求刷新令牌接口

解释为什么刷新时要记录旧的令牌。想像一个没有记录旧令牌的场景:
①前端请求刷新token,后端将token刷新完成后,还没来及放回
②前端的一个查询请求携带旧的access_token过来后,发现令牌不合法,就请求失败了
所以,将旧的access_token放置30s就是为了解决上述场景。