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

spring boot在普通方法中获取HttpServletRequest及其使用的方式

一、通过RequestContextHolder来获取HttpServletRequest,示例代码如下

public static AuthUser getUser(){ RequestAttributes requestAttributes= RequestContextHolder.getRequestAttributes(); ServletRequestAttributes servletRequestAttributes=(ServletRequestAttributes)requestAttributes; //获取http请求,这步是关键 HttpServletRequest httpServletRequest = servletRequestAttributes.getRequest(); //从请求属性中获取 Object user= httpServletRequest.getAttribute("SYSTEM_CURRENT_USER"); if(user!=null){ return (AuthUser) user; } //从请求头获取 String token=httpServletRequest.getHeader("TP-Auth"); if(StringUtils.isBlank(token)){ return new AuthUser(); } //如果不存在则从token中进行解析 Map<String, Object> tokenMap=JwtUtil.getTokenInform(token); AuthUser authUser=AuthUser.builder().userId(Long.valueOf(tokenMap.get("userId").toString())) .userName(tokenMap.get("userName").toString()) .userAccount(tokenMap.get("userAccount").toString()) .userType(Integer.valueOf(tokenMap.get("userType").toString())) .deptIds(tokenMap.get("userDeptIds").toString()) .roleIds(tokenMap.get("userRoleIds").toString()) .postIds(tokenMap.get("userPostIds").toString()) .tenantId(Long.valueOf(httpServletRequest.getHeader("tenantId"))) .build(); return authUser; }

二、关于自定义线程获取失败的问题,需要手动获取一下,示例程序如下:

//获取主线程的上下文 RequestAttributes context = RequestContextHolder.getRequestAttributes(); new Thread(()->{ if (context!=null){ //👌传递并且设置上下文 RequestContextHolder.setRequestAttributes(context); System.out.println("自定义线程"); AuthUser user1= AuthUserUtils.getUser(); System.out.println(user1); } }).start();
http://www.jsqmd.com/news/583894/

相关文章:

  • _C++精灵库算法可视化程序
  • 外企转华为的技术人转型观察与建议
  • Kubernetes网络策略深度解析
  • AI工具实战--VibeCoding开发流程:写代码前的9步准备
  • 本地LLM部署工具(写给小白的LLM工具选型系列:第一篇)
  • CFPS 数据清洗教程:带你轻松上手
  • AI工具实战-- 普通人自学AI必知的30个工具清单
  • 4类URPC2021水下目标检测数据集该数据集拥有7600张图片,拥有4个类别,分别是[‘holothurian‘, ‘echinus‘, ‘starfish‘, ‘scallop‘]数据集是VO
  • ### 3. 工业级鲁棒性:动态参数控制
  • OpenClaw长任务省token方案:Qwen3-32B私有镜像实测对比
  • 深耕公考七载,以师者匠心筑就学员上岸之路
  • STM32三区存储优化LoRa OTA升级速度
  • 10款高效答辩AI工具(含爱毕业aibiye)与模板使用体验分享
  • 基于YOLOV8的狗狗前端检测识别成品项目开箱即用,开箱即用,开箱即用该项目具有如下5个优势:① 包含狗狗检测数据集(mtdata_dog_cls11)共884张图片,11种类别,已按照7:2:
  • AI工具实战--MCP是什么:让AI真正连接外部世界的协议
  • 2025-2026年美国投资移民中介推荐:五大口碑服务评测评价领先 - 品牌推荐
  • WIZ820ioInterface:面向工业场景的W5500嵌入式以太网驱动HAL
  • Slope Trick 学习笔记
  • 深圳万象天地街区美陈:如何从空间装饰升级为体验引擎?肆墨设计
  • 基于51单片机的锅炉温控(PT100、热电偶)探秘
  • 针对双SMC控制的四轮转向轨迹跟踪模型优化与效果评估研究
  • 【图像加密】基于 AES算法的图像位平面加密解密算法附Matlab代码
  • 【算法日记】Day 4 一维动态规划基础(按字符DP)
  • 技术创业中的产品迭代:从内核开发到用户中心
  • 创意随笔:智能转录便携终端
  • 告别图层导出烦恼:智能高效的Photoshop批量处理工具如何提升设计效率
  • 折腾光纤模型的手记
  • 智慧城市落地难?这4个痛点,90%项目都踩过
  • 基于[ClaudeCode]源码魔改重建深度集成微信消息桥使微信用户可直接与 Claude 对话,Claude 也可主动向微信用户发送文字、图片和文件
  • MS5540C传感器驱动开发:类SPI协议与校准算法详解