Commit 1a1bebd6 authored by 杨钧's avatar 杨钧

异常处理

parent 4d8013f9
......@@ -6,6 +6,7 @@ import cn.quantgroup.customer.enums.ErrorCodeEnum;
import cn.quantgroup.customer.exception.ValidTokenException;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.service.IOpSystemService;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -16,6 +17,7 @@ import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Objects;
/**
......@@ -49,14 +51,18 @@ public class ValidOperatePermitFilter implements Filter {
String system = request.getHeader("x-auth-system");
if (StringUtils.isAnyBlank(token, system)) {
log.error("缺少token信息,拦截");
throw new ValidTokenException(ErrorCodeEnum.NO_TOKEN);
//throw new ValidTokenException(ErrorCodeEnum.NO_TOKEN);
renderErrorMsg(servletResponse,ErrorCodeEnum.NO_TOKEN);
return;
}
JsonResult<OpUser> opUserResult = IOpSystemService.findUserByToken(token, system);
if (Objects.isNull(opUserResult) || !opUserResult.isSuccess()) {
log.error("根据token查询不到用户信息 token:{}", token);
// filter中异常无法捕获
throw new ValidTokenException(ErrorCodeEnum.ILLEGAL_TOKEN);
//throw new ValidTokenException(ErrorCodeEnum.ILLEGAL_TOKEN);
renderErrorMsg(servletResponse,ErrorCodeEnum.ILLEGAL_TOKEN);
return;
} else {
OpUser opUser = opUserResult.getData();
UserThreadLocal.set(opUser);
......@@ -66,6 +72,30 @@ public class ValidOperatePermitFilter implements Filter {
filterChain.doFilter(servletRequest, servletResponse);
}
/**
* 处理返回json格式数据
* @param servletResponse
* @param codeEnum
*/
private void renderErrorMsg(ServletResponse servletResponse, ErrorCodeEnum codeEnum) {
servletResponse.setCharacterEncoding("utf-8");
PrintWriter out = null;
JSONObject jsonObject = new JSONObject();
jsonObject.put("code",codeEnum.getCode());
jsonObject.put("msg",codeEnum.getMessage());
try {
out = servletResponse.getWriter();
servletResponse.setContentType("application/json; charset=utf-8");
out.print(jsonObject);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
log.error("处理转换信息异常:{}",e.getMessage());
}
}
@Override
public void destroy() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment