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

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

步骤一:定义新的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.lryc.cn/news/464291.html

相关文章:

  • Docker 安装达梦 DM8 数据库实战指南
  • QtCreator14调试Qt5.15出现 Launching Debugger 错误
  • day1:基础了解
  • 【从零开始的LeetCode-算法】3099. 哈沙德数
  • 【Next.js 项目实战系列】02-创建 Issue
  • 浅谈C++的future
  • 期货外盘行情源7个市场CTP推送式服务说明
  • 计算机毕业设计 | SSM 校园线上订餐系统(附源码)
  • 【iOS】使用一个单例通过AFNetworking来实现网络请求
  • 如何从模块内部运行 Pytest
  • oracle数据库---基本查询(单表查询、多表查询、子查询、分页查询、oracle内置函数、行列转换、集合运算)
  • web API基础
  • 【C++】创建TCP服务端
  • 每天练打字6:今日状况——常用字后五百击键3第2遍已完成,赛文速度93.56
  • rk3568创建基于Ubuntu18.04交叉编译遇到的坑
  • 对“一个中心,三重防护”中安全管理中心的理解
  • jmeter用csv data set config做参数化1
  • 软件分享 丨eSearch 截图软件
  • pytorh学习笔记——cifar10(一)生成数据
  • pikachu靶场SSRF-curl测试报告
  • Java项目-基于Springboot的农机电招平台项目(源码+说明).zip
  • Systemd:简介
  • Snapshot包和Release包区别
  • 最近网站频繁跳转到黑产网站,怀疑是51.la统计代码的问题
  • 【python_修改PPT中字体,run.font.name只对英文生效怎么办?】
  • 【web】JDBC
  • MATLAB代码介绍:一段轨迹的指纹定位,KNN,三维,四个锚点(附源代码,可复制粘贴)
  • XML Schema 复合空元素
  • Java面向对象编程基础(二)
  • [PHP]重复的Notice错误信息