You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.1 KiB

2 years ago
package com.fr.plugin.fg.auth.filter;
import com.fr.data.NetworkHelper;
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class FGFilter extends AbstractGlobalRequestFilterProvider {
@Override
public String filterName() {
return "FGFilter";
}
@Override
public String[] urlPatterns() {
return new String[]{
"/*"
};
}
@Override
public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
// 远程设计 and 移动端请求放行
try {
if (request.getRequestURI().contains("remote")) {
filterChain.doFilter(request, response);
return;
}
if (NetworkHelper.getDevice(request).isMobile()
|| "h5".equals(request.getParameter("op"))
|| request.getRequestURI().contains("/weixin/single/login")
|| request.getRequestURI().contains("mobile")) {
filterChain.doFilter(request, response);
return;
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static class VirtualFilterChain implements FilterChain {
private List<Filter> filters;
private FilterChain originChain;
private int count;
VirtualFilterChain(List<Filter> filters, FilterChain originChain) {
this.filters = filters;
this.originChain = originChain;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException, ServletException {
if (count == filters.size()) {
originChain.doFilter(servletRequest, servletResponse);
} else {
filters.get(count++).doFilter(servletRequest, servletResponse, this);
}
}
}
}