采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如下图,当token过期,捕获到ExpiredJwtException异常,服务器返回500状态码。如何修改返回的http状态码,并返回到前端?
您好,Spring的全局异常管理,是管不到Filter的哈。
如果您使用Filter的话,那么得将异常try...catch...一下,当发生SecurityException、ExpiredJwtException和IllegalArgumentException时,返回您想要返回的消息体即可。
返回JSON的示例代码如下:
response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); PrintWriter out = null ; try{ JSONObject res = new JSONObject(); res.put("success","false"); res.put("msg","xxxx"); out = response.getWriter(); out.append(res.toString()); return false; } catch (Excepton e){ e.printStackTrace(); response.sendError(500); return false;
这其实是一个Spring MVC领域的基础问题哈。
Filter无法被Spring MVC管理,得基于Servlet规范自己写返回。
--------
如果您希望使用Spring的全局异常管理的话,可以:
像视频一样,用AOP玩儿;
改用拦截器,拦截器是Spring MVC里面的东西,发生异常能够被Spring的全局异常管理所管理到。
GlobalExceptionErrorHandler应该捕获哪个异常?SecurityException、ExpiredJwtException和IllegalArgumentException都捕获不到
接上一条回复:我是在filter中验证token是否合法。@RestControllerAdvice捕获不到的情况下,如何返回ResponseEntity方式返回?
登录后可查看更多问答,登录/注册
面向未来微服务:熟练掌握Spring Cloud Alibaba
529 4
1.9k 1
2.6k 2
1.6k 3
3.6k 13