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
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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|