JWT实现无痛刷新、单点登录、多客户端管理的一些思路

894 阅读1分钟

/**

  • PHP无痛刷新jwt

登录用户:

  • 1、根据用户id生成$key,并存放于用户信息表当中的serial字段

  • 2、payload当中增加刷新时间refresh,长度是过期exp时间的2倍(可修改)

  • 3、生成jwt令牌

数据请求:

  • 1、根据客户端带上来的jwt令牌解开payload;

  • 2、根据用户id(存放于payload中)获取serial,作为$key;

  • 3、校验jwt文件,如果成功对payload当中的开始、到期时间、刷新时间进行验证,都无问题则通过

  • 4、如果到期时间已过,而刷新时间未过,则重新设置payload当中的到期和刷新时间,重新生成token并发布,

  • 因为重新生成token的过程当中,$key会根据用户id重新生成序列,所以原令牌就自动失效了;同样,如果

  • 在其他地方登录,也会刷新用户表的serial字段,将当前用户踢下线,实现单点登录。

多点登录:

  • 如果要实现多点登录,只需要客户端提供本机识别(登录IP、Session-cookie启用、登录时随机生成一个长期

  • 不变的序列存放于本机的localstorag当中)等方式,将用户id、识别码、serial字段另建立一个新数据表,并

  • 使用用户id与识别码联合查询serial的方式,则能实现了;而且可以做到通过删除对应联合码记录的形式实现多

  • 客户端管理。

*/

写的有点乱,但思路老鸟们应该能看懂吧,新手发文,纯爱好者!请多多指教!