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

2023-05-16

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

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

  1. 扩展Filter
    实现com.alibaba.dubbo.rpc.Filter接口:
    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注入,参见扩展点加载
  2. 配置文件
    参考:调用拦截扩展
    在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:
    xxxFilter=com.xxx.AuthorityFilter
    修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter,如下:
    <dubbo:provider filter="xxxFilter" />
    

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Django 管理员:获取根据 GET 字符串过滤的 QuerySet,与更改列表中所见完全一样?

    在 Django 管理中 用户可以设置过滤器来限制更改列表中显示的行 如何获取具有由查询字符串定义的过滤器集的 QuerySet 实例 例如 如果我传递 start date gte 2009 11 06 Django 管理员将在某处应用
  • 通过另一个对象数组过滤对象数组

    我想通过另一个对象数组过滤对象数组 我有 2 个这样的对象数组 const array id 1 name a1 sub id 6 name a1 sub id 2 name a2 sub null id 3 name a3 sub id
  • Powershell Get-ChildItem -Filter 的操作方式与具有相同值的Where 子句不同

    我的服务器上有一个名为 MyFolder 的文件夹 还有其他文件夹称为 MyFolder 1 MyFolder 2 MyFolder 3 等 如果我运行 gci C Sample Name like MyFolder 我得到预期的输出 Di
  • Ramda 循环数组

    循环可能是错误的术语 但它描述了我正在尝试的事情 我想为平面数据提供结构 但我还需要跟踪它来自的数组 基本上我的规则是 每个数组 如果级别 1 存在 给它name该项目的 以及typechild大批 每次出现级别 1 时 即使在同一个数组中
  • Javascript array.filter 按子元素中的元素

    我有一个像这样的对象 客户端 数组 client id AAA1 contracts contract id CON1 AAA1 revisions date 2018 07 30 status First Sign 我可以按 client
  • 如何从分组数据框中的每个组中获取第 n 个元素

    我有一个大数据框 其中有一列 有一个组名称 它分组为dplyr 因此多行具有相同的组名称 为了减少数据 我想从每组的第一个元素开始提取每个第 n 个元素 有没有R way没有循环 用序列对每一行进行子集化 会出现经常丢失每组的第一行的问题
  • 图像卷积核逆滤波器的推导

    有谁知道如何计算二维滤波器的逆 假设我有一个 3x3 过滤器 0 1 0 1 1 1 0 1 0我想找到它的倒数 使用 DFT 很容易做到 但假设我想通过卷积来完成 现在 这就是问题所在 Matlab 符号不是我的专长 假设有一个 3X3
  • 从列表中删除自定义单词 - Python

    我有一个数据框列 如下所示 我正在考虑删除特殊字符 我希望附加标签 在列表列表中 以便我可以将列附加到现有的 df 这是我收集了这么多 但似乎不起作用 正则表达式尤其给我带来了很大的痛苦 因为它总是返回 预期的字符串或类似字节的对象 df
  • 如何仅在筛选记录上使用 power bi 中的 MAX 函数?

    我试图选择具有最新日期的记录 数据库中的所有记录都有这些基本列 AssetNumber WorkOrderNumber ScheduledEndDate Department 我想查找特定部门中每项资产的所有最新工单 日期 我有一个基本的措
  • Jquery 匹配值

    您好 我正在尝试执行 if 语句来查看数组中的值是否完全匹配 然后我希望它的同级元素能够显示精确匹配的 html 有人可以帮忙吗 我使用 TWIG 作为高级自定义字段 Wordpress 插件的 HTML 我只想说一次的所有地点的图片以及它
  • Swift:在使用过滤器函数过滤后调用indexOf时无法将类型值转换为@noescape

    在 Swift 2 中 我收到一个错误 无法转换类型值 String AnyObject 预期的参数类型 noescape String AnyObject 抛出 gt 布尔 today NSDate array String AnyObj
  • Python 日志记录在 ini 文件中为处理程序添加过滤器?

    我有一个像这样的 log ini handler info class StreamHandler level INFO formatter fmt filter infofilter args sys stdout handler err
  • 根据 Python Pandas 中的描述场景和状态过滤产品

    假设我在 Pandas DataFrame 中有以下产品描述 我想保留满足以下条件的产品的所有产品描述 对于每一个id in product descriptions 检查是否包含全部descriptions从 至少 1 个场景scenar
  • WEKA 的重采样过滤器 - 如何解释结果

    我目前正在努力解决机器学习问题 而我必须处理大量不平衡的数据集 也就是说 有六个类 1 2 6 不幸的是有例如对于 1 类 有 150 个示例 实例 对于 2 有 90 个实例 对于 3 类 只有 20 个实例 所有其他类都无法 训练 因为
  • 使用组合框过滤文本框

    好吧 我必须创建一个表单 它获取文件夹的内容并将其列出在文本框中 是的 文本框不是列表框 然后 我必须使用包含文件夹所有扩展名的组合框来过滤此文本框 例如 如果我在组合框中选择 txt 则文本框应过滤以仅显示所有文本文件 除了让组合框过滤文
  • php 如何使用 getimagesize() 检查上传时的图像类型[重复]

    这个问题在这里已经有答案了 可能的重复 GetImageSize 在应该返回 FALSE 时没有返回 FALSE https stackoverflow com questions 10464948 getimagesize not ret
  • SQLAlchemy - 将文本查询与过滤器结合起来

    我在用着SA 0 6 6 Python 2 66 and Postgres 8 3 我有某些查询需要一些复杂的安全检查 可以使用WITH RECURSIVE询问 我想做的是将文本查询与查询对象结合起来 这样我就可以根据需要应用过滤器 我最初
  • 使用 TextBox 过滤 Datagridview 行

    我有一个绑定的 datagridView 我想使用 TextBox 值对其进行过滤 我使用了这段代码 private void ChercheStextBox TextChanged object sender EventArgs e tr
  • JS中如何过滤多个字符串? [复制]

    这个问题在这里已经有答案了 我希望能够过滤数组中的多个字符串 类型 例如我想过滤类型meat并输入fruit在下面的数据结构中 我想要实现的是过滤数据对象 const data type meat food hamburger type f
  • 熊猫:有条件的groupby

    我有数据框 ID used at active seconds subdomain visiting category 123 2016 02 05 19 39 21 2 yandex ru 2 Computers 123 2016 02

随机推荐

  • 接口测试工具--Postman安装

    想用汉化版的Postman xff0c 需要有两样东西 xff1a 一是英文版安装包 xff1b 一是汉化包 xff1b 需注意的是中 英文版本号必须一致 xff0c 才可以 但是官网的汉化包 xff0c 现在还没更新到最新版本 xff0c
  • 05c语言——宏定义、带参宏、带参宏函数

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 一 宏定义1 使用规则2 注意 二 带参宏1 定义2 注意 三 带参函数1 带参函数的宏与带参宏的区别2 带参宏函数和普通函数区
  • Makefile 和 CMake 入门

    Makefile Reference Makefile 20分钟入门 xff0c 简简单单 xff0c 展示如何使用Makefile管理和编译C 43 43 代码 简介 Makefile 是一个用于构建 xff08 Build xff09
  • cmake使用独立工具链交叉编译可在android中运行的so包

    cmake使用独立工具链交叉编译可在android中运行的so包 在在命令行下用CMake交叉编译可在android中运行的so包一文中说了一下使用NDK自带的工具链来编译so包 xff0c 当时讲到还有另一种方法来编译so包 xff0c
  • RTK原理

    一 实时载波相位差分 我们知道 xff0c 在利用GPS进行定位时 xff0c 会受到各种各样因素的影响 xff0c 为了消除这些误差源 xff0c 必须使用两台以上的GPS接收机同步工作 GPS静态测量的方法是各个接收机独立观测 xff0
  • keil C51脚本编译

    rem 使用bat编译C51项目 64 echo off amp setlocal enabledelayedexpansion set BIN PATH 61 C Keil v5 C51 set path 61 BIN PATH BIN
  • ESP01s连接Arduino uno发送AT指令返回ERROR

    使用ArduinoIDE连接串口之后出现如下情况 xff1a Esp串口返回ERROR 直接放解决方法 xff1a 将串口监视器右下角 换行符 更改为 NL和CR 再次发送AT指令 xff0c 返回OK 解决原理 xff1a Arduino
  • 如何解决python socket server重启后端口被占用的问题

    本文介绍下 xff0c 在solaris 系统下 xff0c python socket server重启后 xff0c 提示端口被占用 xff0c telnet端口失败 这里给出一个解决方法 xff0c 有需要的朋友参考下 在solari
  • 零基础python字符串处理学习心得

    python 类的定义及使用 xff1a 1 数据如下 xff1a stu1 txt 孙同学 2020 5 21 20 39 男 39 77 56 77 76 92 58 91 84 69 91 stu2 txt 赵同学 2020 11 3
  • PaddlePaddle图像分类神经网络构建正则化笔记

    本文主要根据第二次作业进行分析 作业要求 xff1a 补全网络代码 xff0c 并运行手写数字识别项目 以出现最后的图片和预测结果为准 首先导入必要的包 numpy gt python第三方库 xff0c 用于进行科学计算 PIL gt P
  • 使用GitHub.io仓库实现个人网站建站

    使用GitHub io仓库实现个人网站建站 文章目录 使用GitHub io仓库实现个人网站建站 前言一 注册GitHub二 建立储存库1 新建库2 输入名称3 上传文件4 进行测试5 想进入非index网页 总结 前言 总体流程为注册 建
  • 老旧电脑救星,Windows 8.1 原始系统安装

    老旧电脑win8 1系统安装 先上电脑配置开始安装WIN8 1下载镜像制作U盘启动盘进入主板BIOS设置U盘为第一启动项进入安装环节 总结 先上电脑配置 前段时间从店里拉回来一个十年前的电脑 xff0c 装的win7系统 xff0c 从开机
  • orbslam2图优化基础

    图优化 1 优化问题概述 本周的目标是orb slam2中的PoseOptimization函数 xff0c 这个函数算是orb slam2中Traking进程频繁调用且是入门级的优化问题 看代码的时候多次看到g2o库 xff0c 这个库是
  • ORBSLAM2安装与运行实例

    文章目录 安装环境一 安装依赖库二 安装主要库1 Pangolin2 安装Opencv3 安装DBoW2 和 g2o依赖 三 安装ORB SLAM2本体四 运行ORB SLAM2 xff08 单目例子 xff09 总结 安装环境 提示 xf
  • 人体姿态识别综述

    1 人体姿态估计概述 通过图像 视频中的人像信息 xff0c 将人的姿态描述出来 xff0c 重建一个人体的姿态 主流的方法有2D人体姿态估计和3D人体姿态估计 xff0c 都是基于深度学习的方法 2 2D人体姿态识别 单人姿态估计 多人姿
  • HX711压力传感器学习(STM32)

    目录 原理图 xff1a 引脚介绍 xff1a HX711介绍工作原理 程序讲解 xff1a 整套工程 xff1a 原理图 xff1a 引脚介绍 xff1a VCC和GND引脚分别为HX711芯片的电源输入端口 VCC引脚是连接到5V或3
  • 关于STL的理解与学习之路(小白从头学起)

    奔月者不惧黑夜 xff0c 寻芳者不畏荆棘 xff0c 求爱者不避本心 鲁米 写在前面 我只是记录一下我的学习过程 xff0c 算是网络笔记吧 xff0c 都是很基础的东西 xff0c 你要是对STL感兴趣但完全不了解 xff0c 那就继续
  • rosbag转化为.mp4格式视频

    1 把 bag文件放到Python脚本目录下 2 安装依赖 xff08 确保系统下已经安装ros环境 xff09 使用ffmpeg将ros包文件中的图像序列转换为固定帧率的视频文件 xff0c 需要安装ffmpeg sudo apt ins
  • C++各大有名科学计算库

    C 43 43 各大有名科学计算库 C 43 43 各大有名科学计算库 Blitz 43 43 http www oonumerics org blitz POOMA http www codesourcery com pooma poom
  • 给dubbo接口添加白名单——dubbo Filter的使用

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