1.问题描述:子用户在页面上下订单时,获取用户的实名认证状态信息失败,接口报401鉴权不通过。而用普通用户在页面上下订单是没有问题的。
解决思路:查看日志,发现确实是token校验不通过,然后就找到接口调用方的开发,他说页面上所有调用接口使用到的token都是同一个token,其他接口的调用没问题,那这个token也没问题。对比普通用户可子用户的token发现它们长度不同,然后猜测是不是长度的问题,就利用token校验的一个小bug去验证这个猜想,这个小bug就是在token前面随意添加字符串,都会导致token校验不通过,而在token的最后面添加任意字符都可以校验通过。所以就在token的后面添加字符串,增加token长度,增加到八千多字符的时候,重现了该问题。因为其他微服务用到的token都是从IAM获取的,而且这么长也没有问题,所以猜想应该是因为token过长导致的消息头过长,修改了tomcate配置中消息头大小的限制跟其他微服务一样,重启服务,该问题解决。
2.问题描述:用户个人详细信息页面无法展示,接口报错501
解决思路:取对应时间点的现网日志,发现日志中报数组越界,走读代码发现对从数据库中取出来的固定电话进行匿名化的时候出现的数组越界。问题根因就是之前开发的时候没有考虑到400-800-5555这种电话格式,只考虑到了区号加号码的格式。匿名话的时候是把第一个-之后的四位进行匿名化,而只有三位的话就会导致数组越界。
3.调用第三方接口时,接口要求传参CDHPartyId要是20位的,而我们微服务种的所有id都是使用的UUID32位的,因为可能会一次性处理很多条数据,所以用时间戳也可能会有重复的,然后就百度了一个20位的UUID源码直接使用。