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 javax.servlet.http.HttpServletResponse;
|
|
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") && false){
|
String key = req.getParameter("key"); //获取校验码
|
ServiceModel model = new ServiceModel(); //是否允许访问
|
boolean isAlowVisit = false;
|
System.out.println(key+"=="+CROSS_DOMAIN_KEY);
|
if(key != null && CROSS_DOMAIN_KEY.equals(key)){
|
//System.out.println("开始休眠500毫秒秒");
|
try {
|
Thread.sleep(500);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
} finally{
|
//System.out.println("休眠结束.....");
|
}
|
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);
|
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
//System.out.println("非跨域请求不允许放行"+request.getRemoteHost()+" At "+sdf.format(new Date()));
|
}
|
|
}
|
|
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()));
|
}
|
}
|