package com.qianwen.smartman.common.filter; import com.alibaba.fastjson.JSONObject; import java.io.IOException; import java.io.PrintWriter; import java.util.stream.Stream; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.smartboot.license.client.LicenseException; import com.qianwen.smartman.common.utils.LicenseUtil; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.api.ResultCode; import org.springframework.boot.web.servlet.filter.OrderedFilter; /** * 许可过滤器,检查许可是否有效 */ public class LicenseFilter implements OrderedFilter { String[] pathExclude = {"/init/", "/blade-auth", "/blade-system/", "/param/detail"}; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String servletPath = ((HttpServletRequest)request).getServletPath(); if (Stream.of(this.pathExclude).anyMatch(path -> (servletPath.indexOf(path) != -1))) { chain.doFilter(request, response); } else { try { //LicenseUtil.loadLicense("000000"); chain.doFilter(request, response); } catch (LicenseException e) { writeLicenseFail((HttpServletResponse)response); } } } public void writeLicenseFail(HttpServletResponse response) { R licenseFail = R.fail(ResultCode.CLIENT_UN_AUTHORIZED, ResultCode.CLIENT_UN_AUTHORIZED.getMessage()); response.setContentType("application/json;charset=utf8"); response.setStatus(licenseFail.getCode()); PrintWriter writer = null; try { writer = response.getWriter(); writer.write(JSONObject.toJSONString(licenseFail)); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) writer.close(); } } public int getOrder() { return -1000; } }