news 2026/7/2 4:40:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线上与测试环境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 );
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 4:37:03

Dify知识库数据断裂漏洞:附件ID校验缺失与竞态条件分析

1. 项目概述:一个被忽视的“小”漏洞最近在排查一个线上Dify应用的数据问题时,发现了一个相当隐蔽但后果可能很严重的问题。这个问题源于Dify在处理文件上传和知识库构建时,对附件ID的校验逻辑存在一个潜在的漏洞。简单来说,在某些…

作者头像 李华
网站建设 2026/7/2 4:36:25

Swift并行加密实战:利用GCD与CryptoSwift提升大文件加密性能

1. 项目概述:为什么我们需要并行加密?在移动应用和服务器端开发里,数据安全是底线。无论是用户密码的哈希存储、敏感信息的网络传输,还是本地文件的加密保护,加密算法都是不可或缺的基石。CryptoSwift作为Swift生态中一…

作者头像 李华
网站建设 2026/7/2 4:33:16

Bryntum Gantt 7.3.3 最快的JS甘特图

Bryntum Gantt 是一款针对 JavaScript、 React、Angular和Vue应用程序进行性能优化、完全可定制的甘特图套件。适用于实际项目的工具 Bryntum Gantt 旨在通过智能直观的工具帮助您应对现实世界的复杂性并简化项目规划:用S 形曲线来观察进展速度。 比较不同基线下的任…

作者头像 李华
网站建设 2026/7/2 4:32:41

JMeter性能测试自动化实战:从脚本编写到CI/CD集成的完整指南

1. 项目概述:从手动到自动,性能测试的必经之痛做性能测试的,谁还没被Jmeter“折磨”过呢?从最初的手动点点点,到后来尝试用命令行跑脚本,再到最终下定决心搞自动化,这条路我走了好几年。今天不聊…

作者头像 李华
网站建设 2026/7/2 4:31:40

query.i18n.properties通用解决方案

关于jquery.i18n.properties的使用&#xff0c;网上资料很多&#xff0c;比较完整的使用可以参考 这篇 &#xff0c;有比较详细的使用说明。这里博主简单概述下过程。 回到顶部 1、需要引用的js文件 先在你的项目文件里面添加如下目录结构 首先页面引用的js文件如下 <scr…

作者头像 李华
网站建设 2026/7/2 4:31:05

EasyExcel导入实例-单个sheet

一、Maven 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version> </dependency>二、Excel 映射实体 import com.alibaba.excel.annotation.ExcelProperty; import lo…

作者头像 李华