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.<String>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<Object> 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;
|
}
|
}
|