首页 > 其他 > 详细

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

时间:2020-05-20 15:08:39      阅读:239      评论:0      收藏:0      [点我收藏+]

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 //当前时间戳
}



个人微信:
技术分享图片

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

原文:https://www.cnblogs.com/cuidongxian/p/12923291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!