这个需要从多个角度进行排查,比如可以主要从以下两点进行排查:
一、将数据库调用过程暂时注释,直接固定写成调用后返回的类,再测试看看耗时多少
二、将生成token的方法注释,直接固定写成一串文本的token,再测试看看耗时多少
从以上两个方法就能判断出主要是数据库调用耗时多还是token生成耗时多,然后就可以着重进行优化
已经测试,token生成的时间较长
那就只能着手于减少token的字段或者重写token生成逻辑了。
减少字段的话,可以只保留userId,但是相应的前端后端都需要修改一下,比如后端获取其他信息的时候,不能直接从token解析获取了,需要先通过userId获取User信息,然后再放到redis,从redis获取其他的比如deptId、roleId等字段。前端获取deptId、roleId的时候需要单独再调用一个接口,返回后把数据缓存到vuex内。
如果重写token生成逻辑,这个还是比较难的,相当于去优化jjwt依赖的底层源码了。所以推荐上面的办法。
扫一扫访问 Blade技术社区 移动端