jetty 添加IP白名单

上次给jetty加了http basic auth,做了个简单的授权,这次再来加上一个ip白名单/黑名单

其实很简单,只要通过一个IPAccessHandler

代码

// 这里创建了一个IPAccessHandler对象,然后添加了一个白名单跟黑名单
// 白名单是118-168,是黑名单163,黑名单会优先给过滤掉
// 因为这个handler只有拦截ip的功能,没法响应用户请求,所以需要设置它的handler为spring mvc handler
// 相当于在spring mvc 外面包装了一层,差不多就是这样,三四行代码
IPAccessHandler ipAccessHandler = new IPAccessHandler();
ipAccessHandler.addWhite("192.168.0.118-168");
ipAccessHandler.addBlack("192.168.0.163");
ipAccessHandler.setHandler(springMvcHandler); 

// handlerCollection.setHandlers(new Handler[]{springMvcHandler}); // 这里是原来没有加ip控制器前的
handlerCollection.setHandlers(new Handler[]{ipAccessHandler});    // 现在的

有了白名单跟http授权,可以较好的保护web服务了

转载于:https://my.oschina.net/362228416/blog/880803

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Jetty添加 Filter 过滤器,需要进行以下步骤: 1. 创建一个实现了 javax.servlet.Filter 接口的类,实现其中的 doFilter() 方法。 2. 在 Jetty 中创建一个 ServletContextHandler,用于处理 HTTP 请求。 3. 调用 ServletContextHandler 的 addFilter() 方法添加 Filter 过滤器。 4. 配置 Filter 的映射路径和过滤器名称。 下面是一个简单的示例代码,演示了如何在 Jetty添加 Filter 过滤器: ``` import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import javax.servlet.DispatcherType; 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.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.EnumSet; public class JettyFilterExample { public static void main(String[] args) throws Exception { Server server = new Server(8080); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); server.setHandler(context); // Add a filter FilterHolder filterHolder = context.addFilter(MyFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); filterHolder.setName("MyFilter"); // Add a servlet ServletHolder servletHolder = new ServletHolder(new MyServlet()); context.addServlet(servletHolder, "/myservlet"); server.start(); server.join(); } public static class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Filtering request " + ((HttpServletRequest)request).getRequestURI()); chain.doFilter(request, response); } @Override public void destroy() {} } public static class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("Hello, World!"); } } } ``` 在上面的代码中,我们定义了一个 Filter 类 MyFilter,然后将它添加到了 ServletContextHandler 中。我们还添加了一个简单的 Servlet MyServlet,用于处理 HTTP 请求。当我们运行 Jetty 服务器时,它将在请求被 MyFilter 处理之前打印一条消息,然后调用 MyServlet 来处理请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值