token过期捕获到ExpiredJwtException,如何自定义异常到前端?

来源:11-9 JWT是什么?【是什么、组成、上手】

zha123

2019-11-28

如下图,当token过期,捕获到ExpiredJwtException异常,服务器返回500状态码。如何修改返回的http状态码,并返回到前端?
图片描述

写回答

2回答

大目

2019-11-28

您好,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的全局异常管理的话,可以:

  1. 像视频一样,用AOP玩儿;

  2. 改用拦截器,拦截器是Spring MVC里面的东西,发生异常能够被Spring的全局异常管理所管理到。

0
0

大目

2019-11-28

您好,这个问题在视频后面有解答的哈。简单来说,就是借助spring提供的全局异常管理,统一地处理各种登录,授权相关的异常。 统一处理异常的相关代码在这里:https://git.imooc.com/coding-358/content-center/src/master/src/main/java/com/itmuch/contentcenter/auth/GlobalExceptionErrorHandler.java 祝您学习愉快!
0
2
zha123
接上一条回复:我是在filter中验证token是否合法。@RestControllerAdvice捕获不到的情况下,如何返回ResponseEntity方式返回?
2019-11-28
共2条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

2979 学习 · 1299 问题

查看课程