【BUG修复】延迟填报提交后,提示登录状态过期,或者弹出接口异常
延迟填报功能提交后,提示登录状态过期,如下:
修改一番后,提示 后端接口异常,弹出接口异常,
这个BUG困扰了我整整三天的时间!
彻底绝望!
DEBUG也没发现问题(其实是可以发现问题的,我的断点打错了方向
,好比第二行就报错,但是我打在了第五行,当然无法发现问题。)
我只知道代码有问题,但是不知道为什么有问题!
最后的最后,我去查看之前写好的代码,看看它为什么可以。
然后我去数据库看了看提交的数据,发现他们的updateBy都是-1.
我又看了看我的代码,顿时恍然大悟。
看下这个getRealName()方法:
现在终于知道,它为什么报401。
而在前端的request.js中,有个前端拦截器
好,至此,我彻底了解了,代码从前到后的报错逻辑,现在该去解决BUG了
在SecurityUtils.getLoginUser().getUser().getNickName()
方法中,出现了异常,后面的getUser().getNickName()
只是获取对象,然后获取属性。
因此是SecurityUtils.getLoginUser()
方法,出现了异常,跟进去看看,什么情况。
DetailsHelper.getUserDetails()
这个方法,已经跑到了jar包里,我进去看了一下
因此,返回的LoginUser是Null
换言之,SecurityUtils.getLoginUser().getUser().getNickName()
相当于 null.getUser().getNickName()
这肯定会报错的,但是它没有抛出 NullPointerException
。
因为这个异常被捕获了,抛出了一个throw new CustomException("获取用户账户异常", HttpStatus.UNAUTHORIZED)
移动端提交的更新人,不能这样获取,实际上,是可以通过微信客户端,提交的工号,这个工号就是PC端的userName,通过这个,是可以获取到本次操作对应的操作人。
但是这样,需要写更多的代码。
我不想写了。
直接把更新人改成system
,一个固定值,反正客户没要求。
另外发现一个小BUG,就是put方式提交,导致的异常,前端好像不能显示,而是会直接弹出接口异常,并不会提示登录状态过期。
我也懒得去研究,是什么原因导致的了。
直接把put方式,改为post方式,完美解决。
算逑!!!!