| 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...");  | 
|     }  | 
| }  |