在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。
dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo接口的IP白名单。
扩展Filter
实现com.alibaba.dubbo.rpc.Filter接口:
[java] view plain copy
public class AuthorityFilter implements Filter {
private static final Logger LOGGER = LoggerFactory.getLogger(AuthorityFilter.class);
private IpWhiteList ipWhiteList;
//dubbo通过setter方式自动注入
public void setIpWhiteList(IpWhiteList ipWhiteList) {
this.ipWhiteList = ipWhiteList;
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
if (!ipWhiteList.isEnabled()) {
LOGGER.debug("白名单禁用");
return invoker.invoke(invocation);
}
String clientIp = RpcContext.getContext().getRemoteHost();
LOGGER.debug("访问ip为{}", clientIp);
List<String> allowedIps = ipWhiteList.getAllowedIps();
if (allowedIps.contains(clientIp)) {
return invoker.invoke(invocation);
} else {
return new RpcResult();
}
}
}
注意:只能通过setter方式来注入其他的bean,且不要标注注解!
dubbo自己会对这些bean进行注入,不需要再标注@Resource让Spring注入,参见扩展点加载
配置文件
参考:调用拦截扩展
在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:
[plain] view plain copy
xxxFilter=com.xxx.AuthorityFilter
修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter,如下:
[html] view plain copy
<dubbo:provider filter="xxxFilter" />
这样就可以实现dubbo接口的IP白名单功能了。
摘自:http://blog.csdn.net/mj158518/article/details/47379799
分享到:
相关推荐
前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...
该插件直接放于 jmeter ext/lib包下面即可,可以直接对dubbo接口发起测试,支持jmeter30以上版本,这个是鄙人写的一个专门用于jmeter-dubbo接口自动化测试的插件,原理是通过dubbo appconfig类,直接写客户端调用,...
DUBBO接口测试工具,不需要再搭建网关测试dubbo服务,简单方便。
Dubbo调用java接口程序
性能工具之Jmeter-Dubbo脚本开发(csdn)————程序
方便测试dubbo接口
接口自动化测试框架——python版,支持HTTP,dubbo协议接口
dubbo对外提供接口,和使用外来的接口,以及如何提供协议,和使用哪个协议
这个是jmeter的使用测试dubbo接口的工具包,插件
dubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filter
在自动测试中,针对dubbo接口进行mock的框架 原理 利用dubbo的扩展点自动包装,通过EasyMockClusterWrapper将原本的rpc请求改写为http请求转发到mock服务器返回我们对应mock结果 使用 1. 添加依赖 mvn clean package...
该包为dubbo-monitor,使用方法请参见博文 《Dubbo进阶(五)—— dubbo-monitor-simple使用》 https://blog.csdn.net/sunhuaqiang1/article/details/80141478
nodejs 使用原生的 dubbo (dubbo head hessian body) 协议打通了 dubbo 的 rpc 方法调用 .
Doe 发布 [V1.3.0]前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不...
dubbo接口测试工具,简单配置zookeeper的IP跟端口号即可测试dubbo接口服务
测试dubbo接口用jar包,仅供测试学习使用。
Dubbo和Spring Cloud微服务架构对比——服务注册和发现,精心收集对比,绝对干活,对初学者及有一定使用的基础的绝对使用。
帮助利用jmeter插件,继承dubbo,针对zookepper上的dubbo接口直接发起接口测试
主要介绍了python 如何调用 dubbo 接口,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
直接解压dubbo-incubator-ops-master.rar,控制台进入到incubator-dubbo-ops-master\dubbo-admin\target目录下,输入命令 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 启动监控中心,但是前提是开启了ZooKeeper注册...