首先使用`JWT`的目的就是做服务端无状态,不想在服务端存储与用户`Session`有关的数据。而`JWT`内容仅是简单的Base64编码,故不宜存储敏感信息。一般存储用户ID,或者与用户ID唯一映射的一个字符串(隐藏数据库真实用户ID)。 再回到问题本身,可以考虑使用缓存的方式。比如有个专门封装的校验`是否被禁用?` `是否被删除?` `权限是否发生变化?`的服务。这个服务只是网关层的一个小模块,具体实现可依赖Redis等缓存,加快校验速度。 假设Redis里面存储有 被禁用账号列表? 每次查询一下当前账号是否被禁用。若数据量较大时,还可进行分桶?布隆过滤器等手段优化。 延伸一下,这个流程很适合使用`责任链设计模式`啊。 附加信息比较多,感觉难以做一个通用的解决方案,大概率要根据实际业务来做具体设计。