Java過濾ip,只允許配置的ip能夠被訪問
第一先創建過濾類 實現Filter就會有init(),doFilter(),destroy()三個方法
private String ips;
public String getIps() {
return ips;
}
public void setIps(String ips) {
this.ips = ips;
}
public ipConfigFilter(String ips) {
this.ips = ips;
}
public ipConfigFilter() {
this.ips = "";
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
ips = filterConfig.getInitParameter("ips");
String[] ipList = this.getIps().split(",");
for (String ip : ipList) {
logger.debug(ip);
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String[] ipList = this.getIps().split(",");
String invokerIp = request.getRemoteAddr();
logger.debug("remot:" + invokerIp);
boolean falg = Arrays.asList(ipList).contains(invokerIp);
if (!falg) {
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print("{'code':'401','msg':'您無權限訪問該地址'}");
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
}
在web.xml里配置過濾信息
param-value可以配多個用逗號隔開
<filter>
<filter-name>ipConfigFilter</filter-name>
<filter-class>com.Filter.ipConfigFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>ips</param-name>
<param-value>10.1000.100.100,20.100.100.100</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ipConfigFilter</filter-name>
<url-pattern>/page/pc-back/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
