如何在GitHub上隐藏Flutter项目JSON文件中的admin_token
解决Flutter项目中敏感Token的隐藏方案
核心方案说明
你没法直接在GitHub仓库的代码文件里用$ADMIN_TOKEN变量让平台自动替换——GitHub本身不提供代码内变量替换的功能,但可以通过以下流程实现Token隐藏且不影响project-1的依赖调用:
1. 紧急处理已泄露的Token
- 立刻前往Token对应的服务平台,作废当前的
admin_token并生成新Token,防止被恶意滥用。 - 使用
git filter-repo或BFG Repo-Cleaner工具彻底清除仓库历史中的明文Token(操作后需强制推送仓库,同时通知所有协作者重新克隆仓库)。
2. 重构person.json的配置方式
- 将原
person.json重命名为person.template.json,把admin_token字段改为占位符:{ "admin_token": "$ADMIN_TOKEN", // 其他原有字段... } - 在
.gitignore中添加person.json,禁止该文件提交到GitHub。
3. 通过环境变量注入真实Token
- 在本地开发环境或CI/CD环境中,设置环境变量
ADMIN_TOKEN为新生成的真实Token值。 - 编写简单脚本(Shell或Dart脚本均可),在project-2构建/运行前,将
person.template.json中的占位符替换为环境变量值,生成实际可用的person.json供project-1调用。
示例Shell脚本:#!/bin/bash envsubst < person.template.json > person.json - 若是Flutter项目,也可在
pubspec.yaml中添加脚本钩子,确保依赖获取完成后自动执行替换操作。
4. GitHub存储变量的正确方式
- 可以利用GitHub Secrets存储真实的
ADMIN_TOKEN值(路径:仓库Settings -> Secrets and variables -> Actions)。 - 如果项目使用GitHub Actions做CI/CD,可在构建流程中调用Secrets中的值,执行替换脚本生成
person.json后,再完成后续构建或发布步骤。
注意事项
- 需同步告知所有协作者新的配置流程,本地必须设置对应环境变量才能生成正确的
person.json。 - 绝对不要将包含敏感信息的配置文件提交到公开仓库,哪怕是历史提交记录也要彻底清除。
内容的提问来源于stack exchange,提问作者fayir
相关产品推荐
相关产品推荐

