当前位置: 首页 > news >正文

【开端】通过Java 过滤器灵活配置URL访问权限,并返回403

一、绪论

在JAVA项目系统中,后端给前端提供接口。但是在某些场景我们需要临时控制接口是否能被访问。或关闭某一接口的访问权限。

比如某一接口被攻击了或者某一接口存在漏洞,在系统不关闭的情况下,如何控制系统的访问权限。

二、控制接口访问权限的方案

这里介绍通过过滤器的方式,

1、首先所有的接口URL都应该可配置

     //禁止访问的url
        if (pathMatcher(forbiddenUrl, path)) {
            return forbidden(response);
        }

	//禁止访问的urlif (pathMatcher(forbiddenUrl, path)) {return forbidden(response);}

path  获取到请求的URL

forbiddenUrl 被禁止访问的URL列表。这里可以是多个或者一个。

    String path = request.getURI().getPath(); 获取前端请求的URL 

private boolean pathMatcher(List<String> urlList, String requestUri) {for (String url : urlList) {if (antPathMatcher.match(url, requestUri)) {return true;}}return false;}

 

2、将禁止访问信息返回到前端

	/*** 无权限* * @param response* @return*/private Mono<Void> forbidden(ServerHttpResponse response) {log.info("========暂无权限访问========");String responseDataStr = JSON.toJSON(ResponseData.error(HttpStatus.FORBIDDEN.value(), "forbidden to acc 接口已关闭或无权访问")).toString();byte[] bytes = responseDataStr.getBytes(StandardCharsets.UTF_8);DataBuffer buffer = response.bufferFactory().wrap(bytes);response.setStatusCode(HttpStatus.FORBIDDEN);return response.writeWith(Mono.just(buffer));}

其中配置的URL列表方式可以通过数据库表或者apollo配置等配置注入

http://www.lryc.cn/news/418161.html

相关文章:

  • 【C++综合项目】——基于Boost库的搜索引擎(手把手讲解,小白一看就会!!)
  • 强化阶段《660》和《880》哪本优先级高?
  • Redis远程字典服务器(2) —— 全局命令
  • Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
  • tomcat文件上传漏洞练习
  • 项目实战_图书管理系统(简易版)
  • Gazebo之MyRobot建立
  • WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口
  • ADAS芯片及方案
  • 5 mysql 查询语句
  • 从网络上下载并展示图像数据
  • Machine-Learning 机器学习
  • CSP 2023 普及组第一轮 - CSP/S 2023初试题 基础部分解析
  • 解锁IPython的跨平台魔法:深入探索%%script命令的神秘力量
  • 如何避免项目发布后用户从浏览器WebPack中看到源码
  • java学习19VUE
  • Redis7(四)哨兵、集群
  • 校园课程助手【3】-使用枚举类封装异常优雅处理全局异常
  • LeetCode面试150——58最后一个单词的长度
  • MySQL——数据库的操作,数据类型,表的操作
  • Go 临界资源 安全问题
  • 安卓常用控件(上)
  • 基于 RabbitMQ 实现延迟消息的订单处理流程
  • 使用Python将Word文档转换为PNG图片
  • Qt创建Json对象时浮点数的精度控制
  • 【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
  • 软件测试面试200问(全)
  • 【单片机毕业设计选题24106】-基于阿里云的心率呼吸监测系统
  • leetcode28:找出字符串第一个匹配的下标
  • Java二十三种设计模式-桥接模式(10/23)