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

SpringBoot 过滤器filter当中的自定义异常捕获问题

需求描述:需要根据用户的请求路径拦截做权限控制:

但是这样做全局异常无法捕获

解决方案:

在filter当中引入HandlerExceptionResolver类,通过该类的resolveException方法抛出自定义异常:

 

public class OpenInvokeFilter extends OncePerRequestFilter {@Autowiredprivate GaioAuthorizedProperties gaioAuthorizedProperties;@Autowired@Qualifier("handlerExceptionResolver")private HandlerExceptionResolver resolver;@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {boolean containsUri = request.getRequestURI().contains("/open/invoke");if (containsUri) {String paasid = request.getHeader("x-tif-paasid");String serviceId = request.getHeader("x-smp-serviceid");if (StringUtils.isNotBlank(paasid)) {// 从yml获取匹配数据,判断当前paasId是否有权限调用指定的serviceId,无权限则拦截处理。AccessProperties accessProperties = gaioAuthorizedProperties.getType().get("ebus");Map<String, String[]> passServiceMap = accessProperties.getPassServiceMap();String[] serviceIds = passServiceMap.get(paasid);if (serviceIds == null) {resolver.resolveException(request, response,null, new GaioBizException(RESOURCE_NOT_FOUND_ERROR));return;}boolean match = Arrays.stream(serviceIds).anyMatch(item -> item.equals(serviceId));if (!match) {resolver.resolveException(request, response,null, new GaioBizException(RESOURCE_NOT_FOUND_ERROR));return;}}}chain.doFilter(request, response);}}

相关文章:

SpringBoot 过滤器filter当中的自定义异常捕获问题

需求描述&#xff1a;需要根据用户的请求路径拦截做权限控制&#xff1a; 但是这样做全局异常无法捕获 解决方案&#xff1a; 在filter当中引入HandlerExceptionResolver类&#xff0c;通过该类的resolveException方法抛出自定义异常&#xff1a; public class OpenInvokeFil…...

实验3:左右循环LED灯

获取流水灯工程&#xff1a; 方式一&#xff1a; keilproteus 完成最小系统&#xff0c;点亮led 灯实验_吴小凹的博客-CSDN博客 方式二&#xff1a; Flowing_led.zip - 蓝奏云直接下载。 原理图修改&#xff1a; 无须修改只需要使用流水灯的工程即可&#xff0c;解压到桌面…...

行业追踪,2023-10-13

自动复盘 2023-10-13 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

【实用小工具】一键分离音频中的纯人声~

音分轨——能够一键分离出音频中的【人声】和【音乐】&#xff0c;并单独输出为新的音频文件。可以用来扒谱、提取人声、消除背景音等。 第一步&#xff1a;打开【音分轨】APP&#xff0c;进入首页点击【人声分离】 第二步&#xff1a;选择导入方式&#xff0c;上传需要提取伴…...

如何在虚幻引擎中渲染动画?

大家好&#xff0c;今天我将展示如何在虚幻引擎中渲染动画&#xff0c;以及虚幻引擎渲染动画怎么设置的方法步骤。 需要提前了解&#xff1a; 虚幻引擎本地运行慢、渲染慢、本地配置不够&#xff0c;如何解决&#xff1f; 渲云云渲染支持虚幻引擎离线渲染&#xff0c;可批量…...

Hadoop3教程(三):HDFS文件系统常用命令一览

文章目录 语法格式&#xff08;44&#xff09; HDFS的文件系统命令&#xff08;开发重点&#xff09;参考文献 语法格式 hdfs命令的完整形式&#xff1a; hdfs [options] subcommand [subcommand options]其中subcommand有三种形式&#xff1a; admin commandsclient comman…...

2023年中国手机回收量、手机回收价值及行业细分现状分析[图]

手机回收的主要去向包括再销售及环保降解两类。其中进行再交易的二手手机多为9成新及以上手机。二手手机最终去向主要为再销售及环保降解。 2016年以来&#xff0c;我国手机总体出货量持续下滑&#xff0c;2022年全年&#xff0c;国内市场手机总体出货量累计2.72亿部&#xff0…...

格式转换 ▏Python 实现Word转HTML

将Word转换为HTML能将文档内容发布在网页上&#xff0c;这样&#xff0c;用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件。Word转HTML对于在线发布信息、创建在线文档库以及构建交互式网页应用程序都非常有用。以下是用Python将Word转换为HTML网页的攻略&#xf…...

自己在家给电脑重装系统Win10教程

自己在家怎么给电脑重装系统Win10&#xff1f;Win10电脑系统如果操作时间特别长了&#xff0c;就可能出现卡顿、蓝屏等系统问题&#xff0c;这时候用户就想给电脑重装系统&#xff0c;却不知道重装具体的操作步骤&#xff0c;下面小编给大家详细介绍自己在家给电脑重装Win10系统…...

198、RabbitMQ 的核心概念 及 工作机制概述; Exchange 类型 及 该类型对应的路由规则;了解什么是JMS。

目录 JMS 讲解★ RabbitMQ的核心概念★ RabbitMQ工作机制★ Connection&#xff08;连接&#xff09; 与 Channel&#xff08;通信信道&#xff09;★ Exchange★ Exchange与Queue★ Exchange的类型&#xff08;4种&#xff09;及 该类型对应的路由规则 看RabbitMQ 之前&#x…...

怎样理解伦敦金交易的点差

不管大家做的是什么投资品种&#xff0c;只要过程中有中间商提供了一定的服务&#xff0c;那么就需要支付一定的费用&#xff0c;这也是十分合理的事情。在伦敦金的市场上&#xff0c;交易平台主要通过点差的形式&#xff0c;向客户征收一定的投资服务费用。 伦敦金买卖过程中的…...

mysql主从工作原理、搭建

目录 一、mysql为什么要用主从架构&#xff1f; 二、mysql数据库主从复制原理是什么&#xff1f; 详细的主从复制过程如下图&#xff1a; 主从复制过程概述&#xff1a; 三、mysql主从如何搭建&#xff1f; 本次安装的数据库版本为mysql5.7 1、准备两台服务器&#xff08…...

PHP实现赛邮【SUBMAIL】短信通知

接口文档地址&#xff1a;h​​​​​​ttps://www.mysubmail.com/documents 实现短信通知实例&#xff1a; $url https://api-v4.mysubmail.com/sms/xsend;//接口地址 $appId XXX;//APPID $appkey XXX;//APPKEY $phone XXX;//发送手机号 $project XXX;//模板ID $data …...

完整的电商平台后端API开发总结

对于开发一个Web项目来说&#xff0c;无论是电商还是其他品类的项目&#xff0c;注册与登录模块都是必不可少的&#xff1b;注册登录功能也是我们在日常生活中最长接触的&#xff0c;对于这个业务场景的需求与逻辑大概是没有什么需要详细介绍的&#xff0c;市面上常见的邮箱注册…...

游戏中的随机——“动态平衡概率”算法

前言 众所周知计算机模拟的随机是伪随机&#xff0c;但在结果看来依然和现实中的随机差别不大。 例如掷硬币&#xff0c;连续掷很多很多次之后&#xff0c;总有连续七八十来次同一个面朝上的情况出现&#xff0c;计算机中一般的随机函数也能很好模拟这一点。 但在游戏中&…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于 FIFO 和优先级序列 CAN 总线系统(续)

目录 4.1.2 理想模型的 FIFO 序列分析 4.2 仅有一个缓冲区的模型的可调度性分析...

C# InformativeDrawings 生成素描画

效果 项目 下载 可执行程序exe下载 源码下载...

关于网络协议的若干问题(一)

1、当网络包到达一个网关的时候&#xff0c;可以通过路由表得到下一个网关的 IP 地址&#xff0c;直接通过 IP 地址找就可以了&#xff0c;为什么还要通过本地的 MAC 地址呢&#xff1f; 答&#xff1a;IP报文端到端的传输过程中&#xff0c;在没有NAT情况下&#xff0c;目的地…...

电脑重做系统---win10

电脑重做系统---win10 前言制作启动U盘材料方法打开网址下载启动盘制作工具参照官方说明进行制作使用U盘重做系统 常用软件官网地址 前言 记得最早学习装电脑还是04年左右&#xff0c;最为一个啥也不知道的大一傻白胖&#xff0c;花了几百大洋在电脑版把了个“电脑组装与维修”…...

HTML基础入门02

目录 1.格式化标签 2.图片标签: img 3.超链接标签: a 4.综合案例: 展示博客2 5.表格标签 5.1基本使用 5.2合并单元格 6.列表标签 1.格式化标签 加粗&#xff1a;strong标签和b标签 倾斜&#xff1a;em标签和i标签 删除线&#xff1a;del标签和s标签 下划线&#xff1a;i…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...