2016-08-10 106 views
0

我已經搜索了一個配置駱駝servlet(或路由)限制IP列表的處理請求,但沒有找到任何的參考。我使用的是駱駝的spring引導,並嘗試了幾種方法:攔截,定義一個InterceptStrategy,擴展CamelHttpTransportServlet,覆蓋doGet ......所有這些都沒有成功。駱駝HTTP Servlet IP限制

我知道這對spring引導servlet是可行的,但是隨後我放棄了根據需要通過XML定義多條路由的靈活性,只是更改了URI。非開發人員只能使用XML路由定義。

回答

0

嗯,我忘了的原則,關注點分離... 對我的困境的解決方案是建立在春季啓動Web服務器的過濾器,是這樣的:

public class AllowedIpFilter implements Filter { 

@Value("${my.allowed.ip-address}") 
private String allowedIpAddress; 

@Override 
public void init(FilterConfig filterConfig) throws ServletException {} 

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 
     ServletException { 
    if(!request.getRemoteAddr().equals(allowedIpAddress)){ 
     System.out.println(request.getRemoteAddr() + " is forbidden"); 
     PrintWriter out = response.getWriter(); 
     out.println("Not authorized"); 
     out.flush(); 
    } else { 
     chain.doFilter(request, response); 
    } 

} 

@Override 
public void destroy() {} 

}