1.新增类ValidationFilter继承阿里巴巴的Filter

package com.filter;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;import com.alibaba.dubbo.rpc.*;/*** Description:* author: LinQin* date: 2018/06/08*/
public class ValidationFilter implements Filter {@Overridepublic Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {Properties prop = new Properties();InputStream in = ValidationFilter.class.getResourceAsStream("/ipwhitelist.properties");String clientIp = RpcContext.getContext().getRemoteHost();//客户端iptry {prop.load(in);String ipwhitelist = prop.getProperty("ipwhitelist");//ip白名单if (ipwhitelist.contains(clientIp)) {return invoker.invoke(invocation);} else {return new RpcResult(new Exception("ip地址:"+ clientIp + "没有访问权限"));}} catch (IOException e) {e.printStackTrace();} catch (RpcException e) {throw e;} catch (Throwable t) {throw new RpcException(t.getMessage(), t);}return invoker.invoke(invocation);}
}

2.安装阿里巴巴的约定新建配置文件,指定上面的类

注意:路径和配置文件名称必须一致
com.alibaba.dubbo.rpc.Filter

validation=com.filter.ValidationFilter

3.配置ip白名单
resource 目录
ipwhitelist.properties

ipwhitelist=192.168.1.19,192.168.1.158

4.配置服务端dubbo配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"
><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="common-service" /><!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry protocol="zookeeper" address="193.112.76.194:2181" /><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880" /><dubbo:provider filter="validation" delay="-1" timeout="6000" retries="0"/><!-- 用户服务接口 --><dubbo:service interface="com.service.UserService" ref="userService" /><bean id="userService" class="com.service.UserServiceImpl"></bean></beans>

filter="validation" 表示开启拦截。

启动流程:
启动会先读取dubbo的配置filter的值,对应METE-INF里面的配置的值,找到class进行过滤。

测试:

启动服务,由其他ip的消费者调用,报错

这个错误刚好是我们Fileter类抛出的信息。

不过一般会使用自定义异常进行出来,然后抛出自定义异常。spring框架统一对这类的权限进行特有的页面提示。或者是json返回。

--------------------- 作者:精确而优雅 来源:CSDN 原文:https://blog.csdn.net/qq_35830949/article/details/80626027?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!白名单

给dubbo接口添加白名单——dubbo Filter的使用相关推荐

  1. IP暴露接口IP白名单设置

    暴露接口IP白名单设置 暴露接口IP白名单设置 CrazyL- 2018-01-03 14:36:15  4797  收藏 1 展开 String realIp = IPUtil.getIpAddr( ...

  2. 怎么将服务器加入系统白名单,服务器怎么添加白名单

    服务器怎么添加白名单 内容精选 换一换 防护域名开启WEB基础防护之后,访问网站如果出现500,502,504等报错,并且显示Web应用防火墙和网站连接失败,如图1所示.可能的原因比较多,如防火墙拦截 ...

  3. Android 5.1.1源码修改添加白名单和静默安装功能

    最近弄项目都是些要改源码才能实现的,像静默安装和白名单功能. 静默安装: 1:在源码的AndroidMainfest.xml中添加权限 --- a/frameworks/base/core/res/A ...

  4. HTTP代理如何添加白名单?

    1.接口描述 接口地址:https://proxy.qg.net/whitelist/add 本接口用于添加IP的白名单. 该接口单个Key的请求频率限制为:20次/分钟: 方法:HTTP.GET,需 ...

  5. 企业微信 添加白名单_企业微信群为什么只能加200人?企业微信群怎么申请扩容?...

    使用企业微信的过程中,很多人都会接触到这样一个说法,那就是企业微信群人数上限是200人,但这个说法是不太准确的.下面我们就来看看具体是怎样的吧!1 企业微信群人数上限是多少 企业微信群分为内部群与外部 ...

  6. eas-dep添加白名单

    打开需要添加白名单的业务单据的编辑界面 1做完之后,不要在该客户端上做任何操作,打开客户端安装目录eas\client\logs\log4j.log,拉到最后一行.找到EDITUI结尾的UI.例如下: ...

  7. 【公众号技能+】添加白名单,允许其他公众号转载文章

    1.登录微信公众号 2.在首页左侧的菜单栏中点击原创管理 3.点击全局可转载账号 4.点击全局可转载账号页面中的添加 5.在搜索框输入需要添加为白名单的公众号名称 6.点击搜索框下的公众号 7.设置白 ...

  8. haproxy 客户端真实IP地址添加白名单

    haproxy 客户端真实IP地址添加白名单 haproxy 添加白名单的方法网上有了就不重复了: 我们的架构如下,haproxy 不是直接对外的,所以在haproxy添加ip地址白名单会限制所有交易 ...

  9. Linux防火墙iptables添加白名单

    iptables 在linux系统中安装yum install iptables-services 重启防火墙的命令:service iptables restart 保存到配置中:service i ...

最新文章

  1. HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
  2. cvCreateMat函数
  3. 马斯克称特斯拉AutoPilot方案宛如“超人”,首要任务是“不撞车”;网友:???...
  4. Java对象的序列化与反序列化
  5. 工作99:任务加1逻辑
  6. Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本
  7. 【李宏毅2020 ML/DL】P110-111 Policy Gradient Proximal Policy Optimization
  8. 使用VC获取字符串的长度
  9. SEO高级|移动站搭建
  10. 油管上如何带中文字幕看Peoplesoft最新视频
  11. linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速
  12. JAVA扫码点餐(2)-项目过程
  13. char[]和char* 输出长度不同
  14. 引用echarts报错Cannot read property ‘init‘ of underfined
  15. 加密就像玩魔方----图文详解对称加密(DES、AES)
  16. 一周疫情对行业影响观察 | 中国资产或成避险资产;亚太旅游零售业呼吁政府财政支持...
  17. PPT文件不能编辑怎么回事?
  18. nodejs实现分解质因数的算法
  19. 免Root卸载系统预装应用
  20. 线程同步与互斥:互斥锁

热门文章

  1. ctf里的拼图工具_CTF比赛工具pwntools介绍
  2. 102份深圳炒房材料曝光 网友举报千人炒房大会
  3. RVC使用指南(二)-集群管理
  4. Java基础学习总结(104)——多线程、并发、工具类相关的面试题
  5. 拍照尺寸 ios_iOS 14照片和相机:QuickTake快捷键,照片标题,镜像自拍照等
  6. 微软取消Windows10强制更新
  7. Tomcat可以实现Session共享方案
  8. Android ActionBarSherlock使用教程
  9. 静默安装Oracle12.2数据库
  10. 博为峰Java技术文章 ——JavaSE Swing 如何使用进度条组件JProgressBarⅡ