jeecg-boot,自定义token验证失败返回码


1.先找到shiro配置拦截器的接口

官方路径是: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

2.找到上述类的preHandle方法

官方的:
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 //当前时间戳
}



个人微信:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM