package com.gkhy.labRiskManage.config.license; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; //@Component //@WebFilter(urlPatterns = "/*", filterName = "LicenseFilter") public class LicenseFilter implements Filter { // @Autowired private LicenseManageService licenseManageService; @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest reqs = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; String reqUri = reqs.getRequestURI().toString(); //1、选择过滤的业务系统接口路径 String[] uris = reqUri.split("/"); if(uris.length < 2) filterChain.doFilter(servletRequest,servletResponse); String licenseBiz = uris[1]; if(licenseBiz == null) filterChain.doFilter(servletRequest,servletResponse); //默认所有业务均需要授权访问 boolean checkFlag = true; if(LicenseBizWhiteEnum.parse(licenseBiz) != null){ //业务接口在授权白名单清单中,不需要授权访问 checkFlag = false; } //2、检查授权 if(checkFlag == true){ if(licenseManageService.isActiveLicense()){ filterChain.doFilter(servletRequest,servletResponse); //有授权,放行 }else { //没有授权,拦截 // ResultDto resultDto = new ResultDto<>(); // resultDto.setCode(401); // resultDto.setMsg("系统授权到期,请联系管理员"); response.setContentType("text/html;charset=UTF-8"); response.getWriter().print("系统授权到期,请联系管理员"); response.setStatus(401); } }else { filterChain.doFilter(servletRequest,servletResponse); } } @Override public void destroy() { Filter.super.destroy(); } }