最代码广告位
首页>分享>spring + cxf 的webservice服务端和客户端功能>/cxf_pro/src/com/hgq/cxf/ip/interceptor/CxfIpInterceptor.java
package com.hgq.cxf.ip.interceptor;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class CxfIpInterceptor extends AbstractPhaseInterceptor<Message>
{
    private static final Logger log = Logger.getLogger(CxfIpInterceptor.class);
    
    public CxfIpInterceptor()
    {
        super(Phase.RECEIVE);
    }
    // 允许访问的IP
    private List<String> allowIpList;

    // 拒绝访问的IP
    private List<String> deniedList;

    public List<String> getAllowIpList()
    {
        return allowIpList;
    }

    public List<String> getDeniedList()
    {
        return deniedList;
    }

    public void setAllowIpList(List<String> allowIpList)
    {
        this.allowIpList = allowIpList;
    }

    public void setDeniedList(List<String> deniedList)
    {
        this.deniedList = deniedList;
    }

    @Override
    public void handleMessage(Message msg) throws Fault
    {
        // 获取WS请求中的IP
        HttpServletRequest request = (HttpServletRequest) msg.get(AbstractHTTPDestination.HTTP_REQUEST);
        String ip = request.getRemoteAddr();
        // 判断是否在拒绝列表中
        if(null != deniedList && !deniedList.isEmpty())
        {
            for(String deniedIp : deniedList)
            {
                if(ip.equals(deniedIp))
                {
                    if(log.isEnabledFor(Level.WARN))
                    {
                        log.warn("IP:" + ip + "在拒绝访问列表中");
                    }
                    throw new Fault(new IllegalAccessException("IP:[" + ip + "]拒绝访问,请联系管理员"));
                }
            }
        }
        // 判断是否在允许访问列表中
        if(null != allowIpList && !allowIpList.isEmpty())
        {
            for(String allowIp : allowIpList)
            {
                if(ip.equals(allowIp))
                {
                    if(log.isEnabledFor(Level.WARN))
                    {
                        log.warn("IP:" + ip + "在允许列表中,允许访问");
                    }
                    break;
                }
                else
                {
                    if(log.isEnabledFor(Level.WARN))
                    {
                        log.warn("IP:" + ip + "不在允许访问列表中");
                    }
                    throw new Fault(new IllegalAccessException("IP:[" + ip + "]拒绝访问,请联系管理员"));
                }
            }
        }
    }

}
最近下载更多
far_away LV15月5日
星星
14327211789 LV14月1日
星星
15398544947 LV83月27日
月亮月亮
dengjunjun LV122019年12月11日
月亮月亮月亮
sssssssyy LV102019年8月14日
月亮月亮星星星星
zjhhanghang LV92019年7月24日
月亮月亮星星
人工智能4708 LV72019年5月7日
月亮星星星星星星
heart426 LV92019年2月28日
月亮月亮星星
wbbhappy LV132019年2月19日
月亮月亮月亮星星
weilaizhisheng LV132019年2月11日
月亮月亮月亮星星
最近浏览更多
luolukka LV25月31日
星星星星
liuyilin9608 LV155月17日
月亮月亮月亮星星星星星星
hehe264 LV195月11日
太阳星星星星星星
far_away LV15月5日
星星
126415894154 LV14月29日
星星
奈何一生伤别离 LV24月12日
星星星星
14327211789 LV14月1日
星星
15398544947 LV83月27日
月亮月亮
唐少darks LV123月20日
月亮月亮月亮
栈道小生 LV83月16日
月亮月亮
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友