`
m635674608
  • 浏览: 5003436 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

给dubbo接口添加白名单——dubbo Filter的使用

 
阅读更多

在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。

dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo接口的IP白名单。

  1. 扩展Filter
    实现com.alibaba.dubbo.rpc.Filter接口:
    [java] view plain copy
    1. public class AuthorityFilter implements Filter {  
    2.     private static final Logger LOGGER = LoggerFactory.getLogger(AuthorityFilter.class);  
    3.   
    4.     private IpWhiteList ipWhiteList;  
    5.   
    6.     //dubbo通过setter方式自动注入  
    7.     public void setIpWhiteList(IpWhiteList ipWhiteList) {  
    8.         this.ipWhiteList = ipWhiteList;  
    9.     }  
    10.   
    11.     @Override  
    12.     public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {  
    13.         if (!ipWhiteList.isEnabled()) {  
    14.             LOGGER.debug("白名单禁用");  
    15.             return invoker.invoke(invocation);  
    16.         }  
    17.   
    18.         String clientIp = RpcContext.getContext().getRemoteHost();  
    19.         LOGGER.debug("访问ip为{}", clientIp);  
    20.         List<String> allowedIps = ipWhiteList.getAllowedIps();  
    21.         if (allowedIps.contains(clientIp)) {  
    22.             return invoker.invoke(invocation);  
    23.         } else {  
    24.             return new RpcResult();  
    25.         }  
    26.     }  
    27. }  
    注意:只能通过setter方式来注入其他的bean,且不要标注注解!
    dubbo自己会对这些bean进行注入,不需要再标注@Resource让Spring注入,参见扩展点加载
  2. 配置文件
    参考:调用拦截扩展
    在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:
    [plain] view plain copy
    1. xxxFilter=com.xxx.AuthorityFilter  
    修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter,如下:
    [html] view plain copy
    1. <dubbo:provider filter="xxxFilter" />  

这样就可以实现dubbo接口的IP白名单功能了。

 

http://blog.csdn.net/mj158518/article/details/47379799

分享到:
评论

相关推荐

    dubbo接口测试调试工具

    前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...

    telnet dubbo接口测试工具

    2. `interfaceList.txt`:这是一个文本文件,很可能包含了预先定义好的Dubbo接口列表,用户可以选择其中的接口进行测试,也可以自定义添加新的接口。 3. `start_命令窗口版.exe`:这是Windows平台下的可执行程序,...

    dubbo 对外提供和使用接口方法

    ### dubbo对外提供和使用接口方法 #### 一、Dubbo简介 Dubbo是一个高性能、轻量级的开源服务框架,旨在提供高性能和透明化的RPC远程服务调用方案,是微服务架构的重要组成部分之一。它提供了面向接口代理的高性能...

    Dubbo调用java接口程序

    本篇文章将深入讲解如何使用Dubbo进行Java接口的调用。 首先,理解Dubbo的核心概念: 1. **服务(Service)**:服务是业务逻辑的封装,它定义了服务的接口和协议,如`HelloService`,包含了一组`sayHello`这样的...

    这个是jmeter的使用测试dubbo接口的工具包,插件

    对于Dubbo接口测试,我们需要使用支持Dubbo协议的采样器,这通常是通过添加自定义插件实现的。 1. **Dubbo采样器**:JMeter本身并不内置对Dubbo的支持,但可以通过第三方插件如“JMeter Plugins”来扩展这一功能。...

    DUBBO接口测试工具

    DUBBO接口测试工具,不需要再搭建网关测试dubbo服务,简单方便。

    接口自动化测试框架——python版,支持HTTP,dubbo协议接口

    对于Python环境,我们可以借助于像thrift、grpc这样的跨语言通信库来实现对Dubbo接口的调用。在Python中,通常需要先生成相应的客户端代码,然后通过这些代码与Dubbo服务端交互。测试时,我们需要关注服务的注册与...

    maven打包dubbo服务接口(maven-assembly-plugin)

    本篇文章将详细探讨如何使用Maven的`maven-assembly-plugin`插件来打包Dubbo服务接口。 首先,我们要理解Maven的生命周期和构建过程。Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个...

    jmeter-dubbo接口测试教程

    帮助利用jmeter插件,继承dubbo,针对zookepper上的dubbo接口直接发起接口测试

    性能工具之Jmeter-Dubbo脚本开发(csdn)————程序.pdf

    在本文档中,我们将探讨如何使用Apache JMeter进行Dubbo服务的性能测试,以及相关的环境部署和脚本开发。首先,我们了解Apache Dubbo是一个Java RPC框架,它提供了接口调用、智能容错、负载均衡和服务注册发现的核心...

    Dubbo接口UI测试工具

    【Dubbo接口UI测试工具】是一款专为Dubbo服务设计的图形化测试工具,它使得开发者和测试人员能够更方便地对Dubbo接口进行功能验证和性能测试,无需编写复杂的代码,只需简单配置Zookeeper的IP和端口号,就能直接与...

    dubbo服务接口

    《Dubbo服务接口详解》 在分布式系统架构中,服务接口的设计与实现是至关重要的环节。Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,为开发者提供了强大的服务接口支持。本文将深入探讨Dubbo服务...

    dubbo filter

    dubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filter

    springboot+quartz集群:通过动态配置调度dubbo接口/http接口代码实现

    要实现动态配置,我们需要一个用户界面或者API接口,允许管理员添加、修改或删除任务。这些任务的配置信息(如执行间隔、目标Dubbo或HTTP接口等)将被保存到数据库中。在SpringBoot应用启动时,或者当配置更新时,...

    基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口.zip

    本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...

    会员dubbo接口测试源码

    在IT行业中,接口测试是确保服务之间有效通信的关键步骤,特别是在分布式系统中,如使用了Dubbo框架构建的系统。Dubbo是一个高性能、轻量级的开源Java RPC框架,它致力于提供面向服务的治理方案,包括服务注册、发现...

    nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用.

    标题中的“nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用”意味着在Node.js环境中,开发者成功地实现了对Dubbo服务的RPC(远程过程调用)访问,利用了Dubbo协议的特性。Dubbo是阿里巴巴开源的一个高性能、轻量...

    python 如何调用 dubbo 接口

    本篇将详细介绍如何使用Python调用基于Dubbo协议的远程服务接口,从而帮助开发者更好地理解和学习Python如何与Dubbo接口交互。 首先,我们需要了解Dubbo协议的基础知识。Dubbo是由阿里巴巴开源的高性能RPC框架,它...

    dubbo.rar测试dubbo接口用jar包

    标题中的“dubbo.rar测试dubbo接口用jar包”表明这是一个与Dubbo相关的测试资源,主要包含用于测试Dubbo服务接口的JAR包。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,它提供了服务治理、远程调用、集群...

    dubbo使用例子 dubbo使用例子

    在本示例中,我们将探讨如何使用Dubbo进行基本的使用和配置。 首先,"dubbo使用例子"这个标题表明我们要讨论的是关于在实际项目中如何集成和使用Dubbo。Dubbo的核心功能包括服务注册与发现、远程调用、负载均衡、...

Global site tag (gtag.js) - Google Analytics