现代化的双因素认证 (2FA) 解决方案
基于时间的一次性密码 (TOTP) 生成器,采用 React 19 + TypeScript + Bun 构建。 支持二维码扫描、自动填充、完全离线、数据本地存储。
- 🔐 TOTP 验证码生成 - 30秒间隔、RFC 6238标准、实时倒计时进度环
- 📷 二维码扫描 - 图片上传识别、粘贴/拖拽上传、自动填充、离线处理
- 📤 二维码导出 - 双击账户卡片生成二维码、支持下载 PNG 图片、便于跨设备迁移
- 🎯 智能自动填充 - 一键填充到网页、失败自动复制到剪贴板
- 🎨 拖拽排序 - 自由调整账户顺序、流畅动画效果
- 💾 数据管理 - 本地/同步存储(Chrome 账号,支持回退到本地)、JSON 导入导出、重复检测
- 🌍 多语言 UI - 中英双语、shadcn/ui 设计、流畅动画
- 🔒 隐私安全 - 无第三方网络请求、不收集数据;若启用 Chrome 同步,可在浏览器设置中开启"同步加密密码短语"
git clone https://github.com/titxue/mfa.git
cd mfa
bun install
bun run build
# Chrome → chrome://extensions/ → 开发者模式 → 加载已解压的扩展 → 选择 dist 目录二维码扫描(推荐)
- 点击 "+" 按钮
- 点击"扫描二维码"
- 上传包含 TOTP 二维码的图片
- 自动识别并保存
手动输入
- 点击 "+" 按钮
- 输入账户名称和 Base32 密钥
- 点击"保存"
- 自动填充:左键点击账户卡片
- 手动复制:填充失败时自动复制到剪贴板
- 删除账户:右键点击账户卡片
- 导出:设置 → 导出(JSON格式)
- 导入:设置 → 导入(自动跳过重复)
- 语言:设置 → 选择中文或English
| 特性 | 本扩展 |
|---|---|
| 🎨 UI | shadcn/ui + Radix UI |
| 📷 二维码 | 图片上传 |
| 🚀 构建 | Bun < 200ms |
| 📦 技术 | React 19 + TS |
| 📝 类型 | 100% TypeScript |
- 前端:React 19 + TypeScript + Tailwind CSS
- UI 库:shadcn/ui(基于 Radix UI)
- 构建:Bun(< 200ms)
- 核心:jsQR、lucide-react、sonner
- 标准:Chrome Extension Manifest V3
- Bun 1.2+
- Chrome 88+
bun install # 安装依赖
bun run dev # 开发模式
bun run build # 生产构建
bun run type-check # 类型检查
bun run generate-icons # 生成图标storage- 本地/同步存储activeTab- 自动填充scripting- 页面操作
如何备份数据?
设置 → 导出,下载 JSON 文件。
验证码不准确?
检查系统时间是否准确(TOTP基于时间)。
自动填充失败?
部分网站使用特殊输入框,填充失败时验证码会自动复制到剪贴板。
数据会随 Google 账号同步吗?
是的,默认使用 chrome.storage.sync,在同一 Google 账号且开启同步的设备间自动同步;未登录或关闭同步时回退为本地存储。 注意:
- 商店版与“开发者模式加载”的解压版因扩展 ID 不同,数据不会互通
- 可在 Chrome 同步设置中启用“加密密码短语”以端到端加密同步数据
- 同步存在配额(单 key 最大约 8KB,整体约 10MB),首次拉取可能有延迟
欢迎提交 Issue 和 Pull Request!
开发规范
- 使用 TypeScript,确保类型安全
- 遵循 React Hooks 最佳实践
- 提交信息遵循 Conventional Commits
- 不要提交 console.log
提交 Bug:创建 Issue 并提供问题描述、复现步骤、浏览器版本。
- ✨ 新增二维码导出功能 - 双击账户卡片即可生成/下载二维码
- ✨ 优化粘贴/拖拽上传体验 - 支持粘贴图片和 otpauth:// URI 文本
- 🐛 修复拖拽排序导致单击复制失效的问题
- ⚡️ 优化拖拽激活阈值(需移动 5px)避免误触
- 🐛 修复二维码解析错误
- ✨ 统一版本号管理
- ✨ 添加图标生成系统
- 🎨 优化设置页面 UI
- 🧹 清理 Git 仓库和日志语句
- 📝 完善文档
- ✨ 全新架构:React 19 + TypeScript + Bun
- ✨ 二维码扫描功能
- ✨ shadcn/ui 设计系统
- ✨ Manifest V3 标准
- ⚡️ 构建速度 < 200ms
MIT License