package com.jilongda.common.security;
|
|
import com.jilongda.common.basic.ApiResult;
|
import com.jilongda.common.exception.ServiceException;
|
import com.jilongda.common.exception.TokenException;
|
import com.jilongda.common.utils.ResponseUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.web.filter.OncePerRequestFilter;
|
|
import javax.servlet.FilterChain;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* @author liheng
|
* @ClassName ExceptionHandleFilter
|
* @Description 最外层filter处理验证token、登录认证和授权过滤器中抛出的所有异常
|
* @date 2020-08-24 9:31
|
*/
|
@Slf4j
|
public class ExceptionHandleFilter extends OncePerRequestFilter {
|
@Override
|
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) {
|
// 全局异常无法捕捉过滤器异常,需在此处做处理
|
try {
|
filterChain.doFilter(httpServletRequest, httpServletResponse);
|
} catch (Exception e) {
|
// 如果是业务异常,需返回状态码
|
if (e instanceof ServiceException) {
|
ServiceException e1 = (ServiceException) e;
|
ResponseUtils.renderJson(httpServletResponse, ApiResult.failed(e1.getCode(), e.getMessage()));
|
} else if (e instanceof TokenException) {
|
TokenException e1 = (TokenException) e;
|
ResponseUtils.renderJson(httpServletResponse, ApiResult.failed(e1.getCode(), e.getMessage()));
|
} else {
|
ResponseUtils.renderJson(httpServletResponse, ApiResult.failed(e.getMessage()));
|
}
|
return;
|
}
|
}
|
}
|