我正在使用嵌入式Jetty,我想添加一个servlet过滤器以在每个请求之前检查身份验证。我尝试按照以下示例进行操作,但签名似乎已更改。

org.eclipse.jetty

jetty-server

9.0.4.v20130625

我的Jetty启动器看起来像这样:

public class JettyStarter {

public static void main( final String[] args ) throws Exception {

Server server = new Server(8080);

final ServletHolder servletHolder = new ServletHolder(new CXFServlet());

final ServletContextHandler context = new ServletContextHandler();

context.setContextPath("/");

// context.addFilter(AuthenticationFilter.class, "/*", FilterMapping.REQUEST);

context.addServlet(servletHolder, "/platform/*");

context.addEventListener(new ContextLoaderListener());

context.setInitParameter("contextClass", AnnotationConfigWebApplicationContext.class.getName());

context.setInitParameter("contextConfigLocation", Config.class.getName());

server.setHandler(context);

server.start();

server.join();

}

}

当我取消注释

// context.addFilter(AuthenticationFilter.class, "/*", FilterMapping.REQUEST);

我发现签名已更改。因此,我想退一步,问一问,对于嵌入式Jetty,如何添加一个在请求开始时运行的过滤器,并仅在满足某些条件时才允许请求继续进行?

AuthenticationFilter类的开始看起来像这样:

import javax.servlet.*;

import java.io.IOException;

public class AuthenticationFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {}

@Override

public void doFilter(ServletRequest servletRequest,

ServletResponse servletResponse,

FilterChain filterChain) throws IOException, ServletException {}

@Override

public void destroy() {}

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐