package com.fgkj.Filters;
|
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
import javax.servlet.Filter;
|
import javax.servlet.FilterChain;
|
import javax.servlet.FilterConfig;
|
import javax.servlet.ServletException;
|
import javax.servlet.ServletRequest;
|
import javax.servlet.ServletResponse;
|
import javax.servlet.http.HttpServletRequest;
|
|
import com.fgkj.actions.ActionUtil;
|
import com.fgkj.dto.ServiceModel;
|
|
public class CrossDomainLimitFilter implements Filter{
|
public static final int max_connect_count = 10;
|
|
public final static String CROSS_DOMAIN_KEY = "44c4a294cb66d13727c14b065dbe8548"; //跨域请求 key
|
|
public void doFilter(ServletRequest req, ServletResponse response,
|
FilterChain chain) throws IOException, ServletException {
|
HttpServletRequest request=(HttpServletRequest)req;
|
String URL=request.getRequestURI();
|
//检测跨域访问的请求
|
if(URL != null && URL.endsWith("_ky")){
|
String key = req.getParameter("key"); //获取校验码
|
ServiceModel model = new ServiceModel(); //是否允许访问
|
boolean isAlowVisit = false;
|
if(key != null && CROSS_DOMAIN_KEY.equals(key)){
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
System.out.println("跨域访问域名或ip:"+request.getRemoteHost()+" At "+sdf.format(new Date()));
|
|
isAlowVisit = true;
|
}else{
|
model.setMsg("识别码错误");
|
}
|
if(isAlowVisit){
|
//通过请求
|
chain.doFilter(request, response);
|
}else{
|
//不能放行的请求
|
PrintWriter out = response.getWriter();
|
out.write(ActionUtil.getGson().toJson(model));
|
out.flush();
|
out.close();
|
}
|
}else{
|
//非跨域请求
|
chain.doFilter(request, response);
|
}
|
|
}
|
|
public void init(FilterConfig arg0) throws ServletException {
|
|
}
|
|
public void destroy() {
|
|
}
|
|
public static void main(String[] args) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
System.out.println(sdf.format(new Date()));
|
}
|
}
|