拦截器或过滤器往本次请求体中添加信息

步骤一:定义新的Request

package com.ict.lux.framework.interceptor;import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
import java.util.TreeMap;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;public class EnhancedHttpRequest extends HttpServletRequestWrapper
{private final Map<String, String[]> modifiableParameters;private Map<String, String[]> allParameters = null;public EnhancedHttpRequest (final HttpServletRequest request, final Map<String, String[]> additionalParams){super(request);modifiableParameters = new TreeMap<>();modifiableParameters.putAll(additionalParams);}@Overridepublic String getParameter(final String name){String[] strings = getParameterMap().get(name);if (strings != null){return strings[0];}return super.getParameter(name);}@Overridepublic Map<String, String[]> getParameterMap(){if (allParameters == null){allParameters = new TreeMap<>();allParameters.putAll(super.getParameterMap());allParameters.putAll(modifiableParameters);}return Collections.unmodifiableMap(allParameters);}@Overridepublic Enumeration<String> getParameterNames(){return Collections.enumeration(getParameterMap().keySet());}@Overridepublic String[] getParameterValues(final String name){return getParameterMap().get(name);}
}

步骤二:拦截器使用

package com.ict.lux.framework.interceptor;import cn.hutool.core.util.StrUtil;
import com.ict.lux.utils.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;/*** 共有auth认证(认证内部调用接口)** @author chensir* @date 2024/10/15*/
@Component
public class PublicAuthInterceptor implements HandlerInterceptor {private final AuthProperties authProperties;@Autowiredpublic PublicAuthInterceptor(AuthProperties authProperties) {this.authProperties = authProperties;}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String secretKey = authProperties.getSecretKey();String interiorToken = request.getHeader("token");// 检查请求头authToken秘钥是否正确if (StrUtil.isNotBlank(interiorToken) && secretKey.equals(interiorToken)) {Map<String, String[]> additionalParams = new HashMap<>();additionalParams.put("chensir", new String[] {"您好"});additionalParams.put("uid", new String[] {"123"});EnhancedHttpRequest enhancedHttpRequest = new EnhancedHttpRequest((HttpServletRequest) request, additionalParams);return true;}return true;}
}

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

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

相关文章

图像识别开发前沿:精准识别与高效算法的融合

图像识别开发前沿正经历着精准识别与高效算法的深度融合&#xff0c;这一趋势推动了技术的快速发展&#xff0c;并拓宽了其应用领域。以下是对图像识别开发前沿的详细探讨&#xff1a; 一、精准识别的技术突破 深度学习技术的崛起&#xff1a; 深度学习&#xff0c;特别是卷积…

右上角的钩自存elemntui样式

<div class"img-container"><div class"custom-upload-success"><i class"el-icon-check"></i></div><img :src"imgObj.url" alt"图片"> </img><div class"overlay"…

芯片设计-CDC-sgdc约束原理(1)

子模块级sgdc和top层sgdc兼容问题 模块块级sgdc文件在TOP级别不兼容&#xff0c;导致SOC的结果不匹配。差异在于模块级“时钟名称”定义与TOP层定义不匹配&#xff0c;例如各种约束中的“时钟/from_clk/to_clk”用法。时钟名称总是唯一的&#xff0c;并与定义它的特定引脚/端口…

云计算概述

云计算是一种通过互联网提供计算资源和服务的模式。它允许用户按需访问和使用计算能力、存储、数据库、网络、软件等资源&#xff0c;而无需在本地进行大量投资和维护。云计算的核心理念是将计算资源集中在远程数据中心&#xff0c;通过互联网提供给用户&#xff0c;从而实现灵…

搜维尔科技:TechViz将您的协同项目评审提升到一个全新的高度

TechViz将您的协同项目评审提升到一个全新的高度 搜维尔科技&#xff1a; TechViz将您的协同项目评审提升到一个全新的高度

tauri解决convertFileSrc转换文件为url后,更新文件内容但是页面没有更新

我这里之前的逻辑是将存储之后的图片文件&#xff0c;直接使用convertFileSrc转换为url的形式存储起来了&#xff0c;然后后面有页面展示的地方&#xff0c;直接加载就可以了。但是这样就遇到问题&#xff0c;更新了图片文件&#xff0c;但是页面上展示的图片还是没有变化。这是…

darknet_ros 使用教程

首先是git clone可能会因为到没有权限的问题&#xff08;SSH&#xff09;&#xff0c;此时输入 git clone --recursive https://github.com/leggedrobotics/darknet_ros.git 下载成功之后 catkin_make -DCMAKE_BUILD_TYPERelease catkin失败原因&#xff08;在CMakefile中&…

oracle + mybatis 批量新增

oracle mybatis 批量新增 mybatis 批量最大1000条&#xff0c;数据多的话&#xff0c;分多次执行批量操作&#xff1a; <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4&l…

C++ <queue>队列的priority_queue<int,vector<int>等的用法(本博主原创<C++>queue(队列)的详解

点击蓝字 关注我们 首先&#xff0c; 在C中&#xff0c;队列&#xff08;queue&#xff09;是一种先进先出&#xff08;FIFO&#xff09;的数据结构&#xff0c;可以用来存储和访问数据。C标准库中提供了队列的实现&#xff0c;可以通过包含头文件<queue>来使用。 C中…

UIAbility窗口关闭,怎么弹框拦截

import { emitter } from kit.BasicServicesKit; import { common } from kit.AbilityKit; import { TipsDialog } from kit.ArkUI;// entryAbility.ets 在你的uiability中添加如下生命周期 onPrepareToTerminate() {// 开发者定义预关闭动作emitter.emit("windowWillDest…

15分钟学Go 第1天:Go语言简介与特点

Go语言简介与特点 1. Go语言概述 Go语言&#xff08;又称Golang&#xff09;是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发&#xff0c;尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器&#xff1a;随着计算机硬件…

10.22 软考初级网络管理员之局域网

局域网的基本概念&#xff0c;IE802标准 局域网是指将分散在一个局部地理范围的多台计算机通过传输媒体连接起来的通信网络。IEEE802&#xff0c;对应物理层和数据链路层 IE802标准 以太网技术&#xff08;局域网通信协议、数据传输方式&#xff09; 分值占比高 ‌‌以太网是…

Maven - Assembly实战

文章目录 PreAssembly插件基本配置使用示例示例1&#xff1a;创建包含依赖的JAR包示例2&#xff1a;自定义描述符示例3&#xff1a;多模块项目打包 实战 _qiwenfile结构pom.xml触发脚本 实战 _nacos输出 zip / tar.gz常见问题及解决方案 Pre Spring Boot - 瘦身大作战&#xf…

【解决proto文件生成的java 在intellij idea引用会报错】

现象 下载新项目 代码有引用proto生成的java类 会一直报红 我的idea版本2024.2.3&#xff0c;比较新&#xff0c;自动装载了插件&#xff0c;旧版本需要自己装 解决方式 Maven生成资源 这一步是为了先从proto生成java文件 安装这个插件 右键项目->Maven->Generated…

关于检索评价的一份介绍

在信息检索中&#xff0c;当我们进行完检索评价后就需要对于检索所得的结果进行评价&#xff0c;类似于机器学习中的模型评估那样&#xff0c;因此我们需要一些度量方式来对于信息检索的结果进行评价。 在这篇文章中&#xff0c;我就将介绍一些标准用于度量信息检索的结果。具…

什么是高水位线

oracle中的高水位线 在Oracle数据库中&#xff0c;高水位线&#xff08;High Water Mark, HWM&#xff09;是一个非常重要的概念&#xff0c;它标志着数据文件中已分配空间和未分配空间的分界线。理解高水位线对于数据库性能优化和空间管理至关重要。以下是关于高水位线的详细…

双十一宠物空气净化器应该专门选才不踩坑?有哪几款推荐

对于我来说&#xff0c;双十一可以什么都不买&#xff0c;唯独不能缺了宠物空气净化器。 还不是养的“逆子”掉毛太严重了&#xff0c;很多次都是和我家猫待在一起的时候就会发现手机屏幕上都是猫毛&#xff0c;更过分的是就连鼻子里、眼睛里都是猫毛。我也不是没试过用其它除毛…

Java动态代理 | 代码实现Demo

一、代码实现 1. 编写UserService接口 import java.util.List;public interface UserService {/*** 登录*/void login(String userName, String password);/*** 查询用户列表*/List<String> getUserList(); }2. 编写UserService接口实现类 import java.util.Arrays; i…

JS两数之和

文章目录 &#x1f453;题目描述&#x1f576;思路&#x1f97c;方法一&#x1f9e4;方法二&#x1fa72;方法三&#x1f9e5;总结 &#x1f453;题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&am…

VScode运行C语言终端输出中文乱码问题解决方案

VScode运行C语言输出中文乱码问题解决方案 由于 VSCode 的终端是对系统的 cmd 命令行工具的调用&#xff0c;而 cmd 的默认编码为 GBK。当我们在 VSCode 中以 UTF-8 编码进行代码编写且代码里含有中文字符时&#xff0c;在终端运行代码便会出现中文乱码现象。要解决此问题&…