package com.gkhy.huataiFourierSpecialGasMonitor.config.license;
|
|
import javax.servlet.*;
|
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();
|
}
|
}
|