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

线上与测试环境excel导出列不同

  1. 在用户有查看年龄权限时,年龄列有列名但无法展示。

线上导出表格为

姓名年龄手机号
张三13111112323
李四14222223434

线下导出表格为

姓名年龄手机号
张三1813111112323
李四2014222223434
  1. 用户无查看年龄权限时,正常屏蔽年龄列

线上导出表格为

姓名手机号
张三13111112323
李四14222223434

线下导出表格为

姓名手机号
张三13111112323
李四14222223434

在无权限时正常屏蔽。

问题定位

代码具体逻辑为先查询500条数据开始写入excel,在写入excel的时候预查询下一批需要写入的数据

public void export(...) { boolean canViewAge = isAuthorizationViewAgeUser(); // 主线程判断 ExcelUtils.exportData(..., userService::queryPage, // 异步线程查询+映射 writer -> { if (!canViewAge) { // 主线程控制列 writer.includeColumnFieldNames(fieldNamesExcluding(..., "age")); } }, 500 ); }

根因

权限判断与数据脱敏不在同一线程上下文:

  • 表头列控制使用的是主线程的canViewAge(因此保留年龄列)
  • 数据查询在异步线程执行,异步线程无法稳定获取SecurityContext
  • 导致异步线程判断该用户无权限,将年龄字段置空

触发条件

导出采用分批异步预查询(每批500条)

  1. 主线程先判断权限 canViewAge
  2. 开始写当前批Excel
  3. 同时在线程池异步预查询下一批数据

修复

public void export(...) { canViewAge = isAuthorizationViewAgeUser(); exportData( query, writerCustomizer -> { if (!canViewAge) { writer.includeColumnFieldNames(fieldNamesExcluding(ExportData.class, "age")); } }, (q, pageNum, pageSize) -> queryPage(q, pageNum, pageSize, canViewAge), // 显式透传 500 );
http://www.gsyq.cn/news/1618735.html

相关文章:

  • 宠物类型小程序积分社区系统模板分享
  • 婚内财产协议公证需要什么材料?婚内财产协议公证多久出证?
  • AI大模型就业:把学习路线变成作品集
  • CNC件检测还在靠三坐标抽检?嘉腾自动影像仪让批量全检成为现
  • 2026 年国内主流 AI 工具深度用户指南
  • Three.js 模糊反射(drei转原生)教程
  • Dify接入高德地图MCP服务详细配置教程
  • Java毕业设计-基于 SpringBoot 的线上手办周边商城系统的设计与实现 基于 SpringBoot 的动漫手办周边电商管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 耶鲁牛津剑桥等全球EMBA精英集聚复旦,拓数派董事长冯雷全英文授课“用Ontology实现零代码构建智能体”
  • Gemini AI工具全家桶深度应用指南
  • 记一次内存溢出的分析经历
  • AI Agent实战:我用Gemini批量完成了《道德经》解读
  • 产品 | 《深渊世界》:潜入深海,开启生存冒险之旅!
  • 计算机Java毕设实战-基于 SpringBoot 的医院床位调度管理系统的设计与实现 基于 SpringBoot 的住院信息登记与运维系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 量子修正黑洞热力学:模型构建与数值计算实践
  • 编写轻量级框架
  • python下载
  • 机器人技术全景指南:从机械躯壳到自主智能的进化之路
  • 亦唐科技在人工智能领域的创新应用与发展
  • 性能优化知多少
  • 大模型出来之前,我是团队里最牛的那个
  • 以下是C# 7.0至C# 14.0中类型系统新增或增强的主要内容:
  • 基于单片机智能电饭煲 电饭锅设计保温 温度控制预约定时加热煮饭31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • KMS激活工具终极指南:5分钟彻底解决Windows和Office激活难题
  • Mysql窗口函数学习
  • 机器学习模型生产化落地:从Notebook到高韧性推理服务
  • 矩阵正交化处理:提升循环模型噪声关联回忆性能,小改进带来大提升!
  • 【热学】基于FVM实现一维稳态热传导与内部热产生的数值求解附Matlab代码
  • 我把 Conch 上传到 GitCode:用 Rust + Flutter 做一个 AI 原生的 SSH/ADB 运维工作台
  • 零壹教育:跨语言信息检索中的语义距离测量与优化策略