当前位置: 首页 > 知识库问答 >
问题:

在Dropwizard 2.x中注册ContainerRequestFilter的推荐方式是什么?

麻宜春
2023-03-14

我正在使用水滴巫师1.3.9,并致力于迁移到最新的水滴向导2.x。

现在我有一个容器请求过滤器如下所示

@Authenticate
public class BasicAuthenticator implements ContainerRequestFilter {
      @Context
      private HttpServletRequest servletRequest;
      private final CollectorChannel collectorChannel ;
      private final ConfigStore configStore;

      public BasicAuthenticator(final CollectorChannel collectorChannel, final ConfigStore configStore)


      @Override
      public void filter(ContainerRequestContext requestContext) throws IOException {

            String requestIpAddress = servletRequest.getRemoteAddr();
            String requestHost = servletRequest.getRemoteHost();
            logger.info("Request originates from IP {} Host {}", requestIpAddress, requestHost);

            String authHeader = requestContext.getHeaderString("Authorization");

            Optional<User> user = AuthUtils.getUserBasicAuth(authHeader);
            if (!user.isPresent()) {
                requestContext.abortWith(responseUnAuthenticated());
                return;
            }

            if (!isAuthentic(user.get())) {
                requestContext.abortWith(responseUnAuthenticated());
            }


            if (!isValidLiSource(requestIpAddress) && !isValidLiSource(requestHost)) {
                requestContext.abortWith(responseUnauthorized());
                return;
            }
        }
}

我注册如下

final BasicAuthenticator basicAuthenticator = new BasicAuthenticator(collectorChannel, configStore);
environment.jersey().register(basicAuthenticator);

在迁移文档中提到:

将具有字段上下文注入的资源实例迁移到Dropwizard 2.0包括将字段推入所需endpoint的参数中

但是 filter() 方法不会获取上下文作为参数。有人可以让我知道在2.x中注册容器请求过滤器的推荐方法是什么?

共有1个答案

夹谷星河
2023-03-14

正如@Paul Samostha在上面指出的,也是在下面的论坛中回答的

嗯,迁移指南讨论了资源实例,但不包含请求过滤器。值得一提的是,我在2.0.8中尝试了这种方法,使用了一个字段注入上下文和实例注册,正如您在上面所写的,它似乎对我有效。HttpServletRequest被注入,并在过滤器执行时可用。

 类似资料:
  • 本文向大家介绍React组件命名推荐的方式是哪个?为什么不推荐使用displayName?相关面试题,主要包含被问及React组件命名推荐的方式是哪个?为什么不推荐使用displayName?时的应答技巧和注意事项,需要的朋友参考一下 [react] React组件命名推荐的方式是哪个?为什么不推荐使用displayName?

  • 问题内容: 我需要将TextField的输入限制为整数。有什么建议吗? 问题答案: 线程很旧,但是看起来更整洁,并且如果粘贴则去除非数字字符。

  • 我可以使用以下任意一种方式在Python中绘图: 或: 两者都使用。 推荐哪种方法作为正确的绘图方法?为什么?

  • 在过去的2-3天里,我已经用weblogic+JTA使Spring4.x、Hibernate4.x与weblogic+JTA一起工作 我需要(我认为我需要)配置的东西之一是: 我在hibernate-hibernate-3.1.3.jar 中看到了这个类,但在hibernate-hibernate-core-4.3.10.final.jar中没有看到这个类 谷歌没有告诉我任何事情,我得到的只是3.

  • 问题内容: 我在中有一个列表对象。长按一个项目时,我要显示一个对话框,其中包含单击的项目中的数据。 所述使用数据的每个项目的结合和我能够显示用Log长按当从所选择的项目数据。 但是,当尝试显示对话框时,您需要转到,建议不要在对象中使用。 那么如何显示对话框? 谢谢,Ove 问题答案: 从概念上讲,ViewModel使我误认为是启动Dialog的错误位置。为了更简洁地执行此操作,我将把Recycle

  • 问题内容: 我有一个正在使用的旧代码。 这里是我的代码,其中和已经导入。 在这里,我有些疑问,我编写的代码可以正常工作,但是由于现在不推荐使用,所以我想删除它。我浏览了许多文档,发现使用门户或引用代替了此。我的理解是,如果我使用ref,那么变量get bind到该变量也可以访问DOM元素,但是我想我错了,因为它以这种方式工作。有人可以纠正我对此的理解 问题答案: 根据 此github问题 和 Re