官方路径是:jeecg-boot/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/shiro/authc/aop/JwtFilter.java
/**
* @Description: 鉴权登录拦截器
* @Author: Scott
* @Date: 2018/10/7
**/
@Slf4j
public class JwtFilter extends BasicHttpAuthenticationFilter
官方的:
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
// 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态
if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
httpServletResponse.setStatus(HttpStatus.OK.value());
return false;
}
return super.preHandle(request, response);
}
修改之后:
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
// 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态
if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
httpServletResponse.setStatus(HttpStatus.OK.value());
return false;
}
try{
return super.preHandle(request, response);
}catch (Exception e){
httpServletResponse.setStatus(HttpStatus.OK.value());
JSONObject data = new JSONObject();
data.put("code", 5000);
data.put("message", "Token失效,请重新登录");
data.put("success", false);
data.put(" ", new Date().getTime());
/**获取OutputStream输出流*/
OutputStream outputStream = response.getOutputStream();
/**设置json返回格式*/
((HttpServletResponse) response).setHeader("content-type", "application/json");
/**将字符转换成字节数组,指定以UTF-8编码进行转换*/
byte[] dataByteArr = data.toJSONString().getBytes(StandardCharsets.UTF_8);
/**使用OutputStream流向客户端输出字节数组*/
outputStream.write(dataByteArr);
return false;
}
}
}
测试后返回:
{
"code":5000,
"message":"Token失效,请重新登录",
"success",false,
"timestamp",4654131654615131 //当前时间戳
}
个人微信:
原文:https://www.cnblogs.com/cuidongxian/p/12923291.html