package com.xzx.gc.filter;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.request.HeaderMapRequestWrapper;
|
import com.xzx.gc.common.utils.BusinessUtil;
|
import com.xzx.gc.common.utils.SecurityUtil;
|
import com.xzx.gc.common.utils.SpringUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import javax.servlet.*;
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.util.List;
|
|
/**
|
* created with IntelliJ IDEA.
|
* author: fxbin
|
* date: 2018/9/9
|
* time: 14:22
|
* description:
|
*/
|
@Slf4j
|
public class GlobalFilter implements Filter {
|
|
|
|
@Autowired
|
private BusinessUtil businessUtil;
|
|
@Override
|
public void init(FilterConfig filterConfig) {
|
log.trace("GlobalFilter init...");
|
}
|
|
@Override
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
|
if(!businessUtil.isAuthUrl(request.getRequestURI())||(SpringUtil.isDev()&&"true".equals(request.getHeader("swagger")))){
|
filterChain.doFilter(request, servletResponse);
|
}else {
|
String version = request.getHeader("version");
|
String authkey = request.getHeader("authkey");
|
|
if (businessUtil.isAuth(version) && !request.getRequestURI().contains("/admin")) {
|
HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
|
//解密 头部的用户ID和签名和token
|
String userId = request.getHeader("userId");
|
//rsa解密
|
authkey = SecurityUtil.decrypt(authkey);
|
|
if (StrUtil.isNotBlank(userId)) {
|
String decrypt = SecurityUtil.decrypt(authkey, userId);
|
requestWrapper.addHeader("userId", decrypt);
|
}
|
String sign = request.getHeader("sign");
|
if (StrUtil.isNotBlank(sign)) {
|
String decrypt = SecurityUtil.decrypt(authkey, sign);
|
requestWrapper.addHeader("sign", decrypt);
|
}
|
String token = request.getHeader("token");
|
if (StrUtil.isNotBlank(token)) {
|
String decrypt = SecurityUtil.decrypt(authkey, token);
|
requestWrapper.addHeader("token", decrypt);
|
}
|
filterChain.doFilter(requestWrapper, servletResponse);
|
} else {
|
|
filterChain.doFilter(request, servletResponse);
|
}
|
}
|
}
|
|
@Override
|
public void destroy() {
|
log.trace("GlobalFilter destroy...");
|
}
|
}
|