LiJun
2018-11-16 af57cd2f73a05174bc8df1247bf80cc024a0b603
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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()));
    }
}