【发布时间】:2017-10-21 05:31:32
【问题描述】:
@Context 注入适用于类,但不能使其适用于对象。
ContainerRequestFilter 中的httpServletRequest 产生空指针。
Dropwizard 版本:- 1.1.0
容器请求过滤器
公共类 ApplicationIPAuthFilter 实现 ContainerRequestFilter { private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationIPAuthFilter.class); 私有 HerculesRestAccessor restAccessor; 私有字符串应用程序名称; @语境 私有 HttpServletRequest httpServletRequest; 公共应用程序IPAuthFilter(){ } 公共 ApplicationIPAuthFilter(HerculesRestAccessor 访问器,字符串应用程序名称){ restAccessor = 访问者; this.applicationName = 应用程序名称; } @覆盖 公共无效过滤器(ContainerRequestContext requestContext)抛出 IOException { // 需要远程IP 字符串 remoteIp = this.httpServletRequest.getRemoteAddr(); …… } }动态特性
@Provider 公共类 ApplicationIPAuthFeature 实现 DynamicFeature { 私有最终 HerculesRestAccessor 访问器; 私有最终字符串应用程序名称; 公共应用程序IPAuthFeature(HerculesRestAccessor 访问器,字符串应用程序名称){ this.accessor = 访问器; this.applicationName = 应用程序名称; } @覆盖 公共无效配置(ResourceInfo 资源信息,FeatureContext 上下文){ if (resourceInfo.getResourceMethod().getAnnotation(ApplicationIPAuthRequired.class) != null) { // 不工作 context.register(new ApplicationIPAuthFilter(accessor, applicationName)); //@Context 注入适用于类的 ContainerRequestFilter //context.register(ApplicationIPAuthFilter.class); } } }我正在尝试在 ContainerRequestFilter 中获取远程 ip,以根据 ip 对请求进行身份验证。
我该如何解决这个问题.. 需要帮助吗?
【问题讨论】:
标签: java jersey jetty jersey-2.0 dropwizard