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