美文网首页
springboot:拦截器处理登陆过期的数据返回

springboot:拦截器处理登陆过期的数据返回

作者: 简单coder | 来源:发表于2019-11-15 22:05 被阅读0次

正常情况下,在数据请求时,我们希望登陆过期等判断逻辑在拦截器就处理掉
所以就会在preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)中去做token查询等验证之类的事情
但是处理时发现一个问题:

POST http://localhost:2222/user/getUserInfo 500
No 'Access-Control-Allow-Origin' header is present on the requested resource.

前端返回了500错误,并弹出一个跨域请求的error,两个问题,一个个解决

500错误(dao层空指针)

返回服务器后台打印,看到



为了寻找到哪个指针为空,我加了空指针断点. IDEA有一个强大的断点类型:异常断点. 在程序出现指定的异常时,自动断点,无论在哪里,这个时候debug可以看清所有的情况,按图设置:





添加完成后重新运行项目进行请求,就会发现:

问题

造成dao注解对象null的原因是因为拦截器加载是在springcontext创建之前完成的,所以在拦截器中注入实体自然就为null。

解决

解决方法就是让bean提前加载,让拦截器后于springcontext加载,将配置信息修改为如下:



添加后 返现mapper不会空 但是出现第二个问题:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

跨域问题
这问题也挺简单的
一种方式,两种写法

方法一:

方法二:

最后还有一个我自己的笨蛋点:

对于mysql的语句,如果你select了一个model,然后修改某个值,然后想update这个model,
这时候你必须将你的update_time置空,否则他只会更新你传进去的值.
(如果你的update_time是设置成
update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
)

最后吐槽一点:解决问题后,为了写一篇blog,然后一点点回退,把代码还原成之前错误的时候去截图真的好麻烦啊o(╯□╰)o

相关文章

网友评论

      本文标题:springboot:拦截器处理登陆过期的数据返回

      本文链接:https://www.haomeiwen.com/subject/fxxeictx.html