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

news2025/2/22 20:32:05

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

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

解决方案:

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

 

public class OpenInvokeFilter extends OncePerRequestFilter {

    @Autowired
    private GaioAuthorizedProperties gaioAuthorizedProperties;

    @Autowired
    @Qualifier("handlerExceptionResolver")
    private HandlerExceptionResolver resolver;


    @Override
    protected 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);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1091506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

Pulsar-Schema 数据结构

Pulsar-Schema 数据结构 为什么需要使用Schema&#xff1f;怎么使用&#xff1f;生产者端消费者端使用用例Schema定义Schema类型基本类型复合类型KeyValue schemaStruct schemaPulsar提供了以下方法来使用结构模式staticgeneric 自动SchemaSchema验证实施Schema演化Schema版本控…

DAY05_瑞吉外卖——新增套餐套餐分页查询删除套餐短信发送手机验证码登录

目录 1. 新增套餐1.1 需求分析1.2 数据模型1.3 准备工作1.4 前端页面分析1.5 代码开发1.5.1 根据分类查询菜品1.5.1.1 功能实现1.5.1.2 功能测试 1.5.2 保存套餐1.5.2.1 功能实现1.5.2.2 功能测试 2. 套餐分页查询2.1 需求分析2.2 前端页面分析2.3 代码开发2.3.1 基本信息查询2…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

地下水数值模拟软件GMS操作为主&#xff0c;在教学中强调模块化教学&#xff0c;分为前期数据收集与处理&#xff1b;三维地质结构建模&#xff1b;地下水流动模型构建&#xff1b;地下水溶质运移模型构建和反应性溶质运移构建5个模块&#xff1b;采用全流程模式将地下水数值模…

Dtop环球嘉年华全新支付渠道接入,带来更便捷全球化购物体验

随着全球互联网的快速发展和数字化时代的来临&#xff0c;Dtop环球嘉年华逐渐成为全球消费者购物的主要方式之一。作为一家跨境电商平台&#xff0c;伴随着全球用户量不断攀升&#xff0c;用户体验以及应用升级已经成为平台未来发展的重要因素。Dtop环球嘉年华致力于满足用户多…

源码规则引擎(Jvs-rules):10月新增功能介绍

JVS-rules是JAVA语言下开发的规则引擎&#xff0c;是jvs企业级数字化解决方案中的重要配置化工具&#xff0c;核心解决业务判断的配置化&#xff0c;常见的使用场景&#xff1a;金融信贷风控判断、商品优惠折扣计算、对员工考核评分等各种变化的规则判断情景。 规则引擎本次更…

【vue快速入门】很适合JAVA后端看

目录 1.概述 2.环境 3.创建项目 4.指令 4.1.数据域、方法域 4.2.绑定变量 4.3.绑定事件 ​编辑 4.4.隐藏和显示 4.5.设置属性 4.6.循环 ​编辑 5.组件 6.路由 7.网络请求 1.概述 前端最核心的操作是写业务逻辑以及操作DOM元素&#xff0c;操作DOM元素是很繁琐的…

【【萌新的SOC学习之AXI-DMA环路测试】】

萌新的SOC学习之AXI-DMA环路测试 AXI DMA环路测试 DMA(Direct Memory Access&#xff0c;直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存&#xff0c;而不需中央处理器&#xff08;CPU&#xff09;介入处理。…

NewStarCTF2023week2-include 0。0

简单审一下代码&#xff1a; 1、flag在flag.php 2、使用get请求方式给file传参 3、存在正则匹配&#xff0c;会过滤掉base和rot&#xff08;i表示不区分大小写&#xff0c;也就是我们无法使用大小写绕过&#xff09; 正则匹配详细知识请参考我之前的博客 http://t.csdnimg.…

springboot中如何在测试环境下进行web环境模拟测试

web环境模拟测试 模拟端口 SpringBootTest(webEnvironment SpringBootTest.WebEnvironment.RANDOM_PORT) public class WebTest {Testvoid testRandomPort () {} }

凉鞋的 Godot 笔记 109. 专题一 小结

109. 专题一 小结 在这一篇&#xff0c;我们来对第一个专题做一个小的总结。 到目前为止&#xff0c;大家应该能够感受到此教程的基调。 内容的难度非常简单&#xff0c;接近于零基础的程度&#xff0c;不过通过这些零基础内容所介绍的通识内容其实是笔者好多年的时间一点点…

程序员没有工作经验怎么办?能不能找到工作?

本人一般本科&#xff0c;软件专业。工作8年&#xff0c;目前任一家中型公司技术主管&#xff08;履技术总监的工作&#xff0c;但不敢以总监自居&#xff09; 没经验的同学找工作&#xff0c;面试官看的不是你已经积累了多少&#xff0c;而是看你的态度和学习能力&#xff0c…

springBoot 条件注解

springBoot 条件注解 前言常用的条件注解用例场景用例打印结果 前言 ConditionalOnXxx 如果指定条件成立则指定条件触发 常用的条件注解 ConditionalOnClass: 如果类路径存在这个类&#xff0c;则触发了个行为 ConditionalMissingClass: 如果类路径中不存这个类&#xff0c;…

2023年中国改性聚乙烯产能、产量及市场规模现状分析[图]

聚乙烯&#xff08;PE&#xff09;是五大合成树脂之一&#xff0c;其产量占世界通用树脂总产量的40%以上&#xff0c;是我国合成树脂中产能第三大、进口量最多的品种。2022年中国聚乙烯年产量共计2532万吨万吨&#xff0c;较2021年增幅8.7%。初级形状的聚乙烯进口量895.8万吨&a…

[12 种安卓数据恢复方案] 最佳免费 Android 照片恢复工具榜单

我们用 Android 手机的相机捕捉我们难忘的时刻&#xff0c;并将它们存储在画廊中。但是由于各种原因&#xff0c;照片可能会从 Android 手机中删除。一次丢失所有令人难忘的重要照片对任何人来说都是非常令人沮丧的。但是&#xff0c;可以使用适用于 Android 手机的免费照片恢复…

农场养殖农产品商城小程序搭建

鸡鸭羊牛鱼养殖用户不少&#xff0c;其规模也有大有小&#xff0c;尤其对一些生态养殖企业&#xff0c;其产品需求度更高&#xff0c;同时他们也有实际的销售需求。 由于具备较为稳定的货源&#xff0c;因此大规模多规格销售属性很足。 通过【雨科】平台搭建农场养殖商城&…

APT攻击

1.1 APT攻击简介 1.1.1APT攻击概念 网络安全&#xff0c;尤其是Internet互联网安全正在面临前所未有的挑战&#xff0c;这主要就来自于有组织、有特定目标、持续时间极长的新型攻击和威胁&#xff0c;国际上有的称之为APT&#xff08;Advanced Persistent Threat&#xff09;攻…

Docker学习_存储篇

当以默认的方式创建容器时&#xff0c;容器中的数据无法直接和其他容器或宿主机共享。为了解决这个问题需要学习一些Docker 存储卷的知识。 Docker提供了三种存储的方式。 bind mount共享宿主机文件目录volume共享docker存储卷tmpfs mount共享内存 volume* volume方式是容器…

【数据结构初阶】八、非线性表里的二叉树(二叉树的实现 -- C语言链式结构)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】七、非线性表里的二叉树&#xff08;堆的实现 -- C语言顺序结构&#xff09;-CSDN博客 回顾 二叉树的概念及结构&#xff1a; 二叉树的概念 一棵二叉树是节点的一…

sql 常用命令-----增删查改

创建表格 CREATE TABLE table_name(字段一,字段,.......);删除表格 DROP TABLE table_name; 增 INSERT INTO table_name VALUES(字段一值,字段一值,.......); 查 查找字段 SELECT 字段 FROM 表名; 查找表格所有内容 SELECT * FROM 表名; 按条件查找 SELECT * FROM…