编辑 | blame | 历史 | 原始文档

项目完成总结

项目概述

本项目是一个基于 Vite + Vanilla JavaScript 构建的企业微信 OAuth 2.0 认证登录应用。应用支持以下核心功能:

  1. 企业微信 OAuth 2.0 授权 - 自动识别企业微信环境并进行身份认证
  2. 用户信息获取 - 自动获取登录用户的身份信息(名称、手机号、邮箱等)
  3. 管理员密码管理 - 支持手机号输入、密码生成、有效期管理和历史记录查询
  4. 移动端优先 - 完全响应式设计,支持所有设备

📦 项目结构

qiyeWeComApp/
├── src/                           # 源代码
│   ├── main.js                    # 应用入口 (Vite 模块化入口)
│   ├── js/
│   │   ├── app.js                 # 应用主逻辑(核心认证、用户管理)
│   │   ├── wechat-oauth.js         # 企业微信 OAuth 客户端
│   │   ├── wecom-config.js         # 企业微信配置文件
│   │   ├── api-client.js           # HTTP 客户端
│   │   └── utils.js               # 工具函数库
│   └── styles/
│       └── main.css               # 全局样式 (移动端优先)
├── index.html                      # SPA 入口模板
├── vite.config.js                 # Vite 配置
├── package.json                   # 项目依赖和脚本
├── .env.example                   # 环境变量示例
├── .gitignore                      # Git 忽略配置
├── server-example.js              # Node.js + Express 后端示例
│
├── 文档文件:
│   ├── README_VITE.md             # Vite 项目说明
│   ├── WECOM_INTEGRATION_GUIDE.md  # 集成步骤指南
│   ├── WECOM_OAUTH_GUIDE.md        # OAuth 后端实现指南
│   └── PROJECT_SUMMARY.md          # 项目总结 (本文件)
│
└── dist/                           # 生产构建输出 (npm run build)

🎯 核心功能详解

1. 企业微信 OAuth 2.0 认证

工作流程:

用户访问应用
    ↓
检查是否在企业微信环境(User-Agent 包含 wxwork)
    ↓
如果是 → 自动重定向到企业微信授权页面
如果否 → 显示授权按钮
    ↓
用户授权后,企业微信返回授权码(code)
    ↓
前端将 code 发送到后端 /api/wecom/getUserInfo
    ↓
后端使用 code 和 Secret 交换用户信息
    ↓
前端显示用户信息并初始化应用

关键文件:
- src/js/wechat-oauth.js - OAuth 客户端实现
- src/js/app.js - 授权流程处理
- server-example.js - 后端交换逻辑

2. 用户信息获取与存储

获取的用户信息:
javascript { userid: "user123@company", // 企业微信用户ID name: "张三", // 用户姓名 mobile: "13800138000", // 手机号 email: "zhang@company.com", // 邮箱 department: "技术部", // 部门 position: "工程师" // 职位 }

存储方式:
- SessionStorage: 用户授权信息(会话级,刷新不丢失)
- LocalStorage: 历史记录(持久化存储)
- 内存: 当前用户信息(window.currentUser

3. 管理员密码功能

功能点:
- ✅ 手机号格式验证(1开头,11位数字)
- ✅ 申请次数限制(每个手机号最多5次/周期)
- ✅ 密码自动生成(6位随机数字)
- ✅ 72小时有效期管理
- ✅ 自动过期清理
- ✅ 快速复制功能
- ✅ 历史记录查询

4. 移动端响应式设计

设计断点:
- 768px 及以下: 平板/大屏手机
- 480px 及以下: 标准手机
- 360px 及以下: 小屏手机

优化特性:
- 全屏布局,无边框圆角(手机特性)
- 触屏优化(移除 hover,使用 active)
- 惯性滚动支持(-webkit-overflow-scrolling)
- 刘海屏支持(viewport-fit=cover)
- 自动缩放字体和间距

🔐 安全特性

前端安全

  1. CSRF 防护
  • 使用 State 参数验证
  • 在 sessionStorage 中存储随机 state
  • 回调时验证 state 匹配
  1. 数据存储安全
  • 敏感信息存储在 sessionStorage(会话级)
  • 不在 localStorage 中存储用户凭证
  • 授权码只在内存中存在
  1. 防止 XSS
  • 不使用 innerHTML 处理用户输入
  • 所有 DOM 操作都进行了转义

后端安全

  1. Token 验证
  • 验证 access_token 有效性
  • 实现 token 刷新机制
  • 缓存 token 减少 API 调用
  1. 请求签名
  • 验证企业微信 API 的签名
  • 实现消息体签名验证
  1. 权限控制
  • 验证用户身份
  • 基于角色的权限检查
  • 部门级别的权限隔离

📊 技术栈详解

技术 版本 用途
Vite 5.0+ 前端构建工具
Vanilla JS ES6+ 核心应用逻辑

| HTML5 | - | 页面结构 |
| CSS3 | - | 响应式设计 |
| LocalStorage | - | 数据持久化 |
| SessionStorage | - | 会话数据 |
| Fetch API | - | HTTP 请求 |
| Node.js | 14+ | 后端运行时 (可选) |
| Express | 4.0+ | Web 框架 (可选) |

🚀 快速启动指南

开发环境

# 1. 安装依赖
npm install

# 2. 启动开发服务器
npm run dev

# 浏览器自动打开 http://localhost:5173

生产构建

# 1. 构建应用
npm run build

# 2. 预览构建结果
npm run preview

# 3. 生成的文件在 dist/ 目录

后端服务

# 1. 复制环境变量
cp .env.example .env

# 2. 填入企业微信配置信息

# 3. 启动后端服务
node server-example.js

# 或使用你自己的后端服务

📝 配置文件说明

1. src/js/wecom-config.js - 企业微信配置

export const WECOM_CONFIG = {
    corpId: 'YOUR_CORP_ID',           // 企业 ID
    agentId: 'YOUR_AGENT_ID',         // 应用 ID
    redirectUri: 'https://your-domain.com/',  // 回调地址
    apiBaseUrl: '/api'                // API 基础路径
};

2. .env - 环境变量

WECOM_CORP_ID=ww1234567890abcdef
WECOM_APP_SECRET=your_secret_key
WECOM_AGENT_ID=1000001
NODE_ENV=development
PORT=3000

3. vite.config.js - Vite 配置

export default defineConfig({
    server: {
        port: 5173,
        open: true
    },
    build: {
        outDir: 'dist',
        minify: 'terser'
    }
});

🔗 API 端点

前端发送

端点 方法 用途
/api/wecom/getUserInfo POST 使用授权码获取用户信息

请求:
json { "code": "授权码" }

响应:
json { "code": 0, "message": "success", "data": { "userid": "user123", "name": "张三", "mobile": "13800138000" } }

后端实现

参考 server-example.js 获取完整的 Node.js 实现示例。

📚 文档指南

文档 内容
README_VITE.md Vite 项目总体说明
WECOM_INTEGRATION_GUIDE.md 完整集成步骤和故障排查
WECOM_OAUTH_GUIDE.md OAuth 后端实现指南
PROJECT_SUMMARY.md 项目总结 (本文件)

❓ 常见问题

Q1: 如何在非企业微信环境测试?

A: 应用会自动检测用户环境。在非企业微信环境中会显示授权按钮。

Q2: 获取的用户信息中没有某些字段?

A: 需要在企业微信应用设置中配置相应的权限范围。

Q3: 如何添加自定义权限验证?

A: 在后端 /api/wecom/verify/:userId 端点实现权限检查逻辑。

Q4: 可以在本地 http:// 环境测试吗?

A: 企业微信要求 HTTPS,但可以在本地使用 https://localhost

Q5: 如何处理用户退出?

A: 调用 oauth.clearUserInfo() 清除用户信息,重新显示授权页面。

🎓 学习资源

💡 扩展建议

短期扩展

  1. 集成企业微信 JSSDK
  • 支持扫一扫
  • 支持图片上传
  • 支持分享到企业微信
  1. 添加数据库集成
  • 保存用户信息到数据库
  • 记录操作审计日志
  1. 实现多语言支持
  • 国际化(i18n)
  • 中英文切换

中期扩展

  1. 集成分析系统
  • 用户行为分析
  • 功能使用统计
  1. 添加通知系统
  • 消息推送
  • 邮件提醒
  1. 实现权限系统
  • 角色管理
  • 细粒度权限控制

长期扩展

  1. 迁移到现代框架
  • Vue 3 / React
  • TypeScript
  • 单元测试
  1. 微服务化
  • 拆分功能模块
  • 独立部署
  1. 数据可视化
  • 运营数据展示
  • 实时监控面板

🏆 最佳实践

代码组织

  • ✅ 模块化结构,易于维护
  • ✅ 清晰的函数命名和注释
  • ✅ 分离关注点(OAuth、API、UI)

安全建议

  • ✅ 始终使用 HTTPS
  • ✅ 不要在前端暴露 Secret
  • ✅ 实现请求签名验证
  • ✅ 定期更新依赖

性能优化

  • ✅ 使用 Vite 的快速模块热更新
  • ✅ 代码分割和懒加载
  • ✅ 缓存优化(HTTP 缓存、浏览器缓存)

用户体验

  • ✅ 快速的首屏加载时间
  • ✅ 友好的错误提示
  • ✅ 流畅的移动端体验

📈 性能指标

指标 目标值 当前值
首屏加载时间 < 2s
Lighthouse 分数 > 90
构建产物大小 < 100KB
移动端兼容性 所有现代浏览器

📞 支持与反馈

遇到问题?

  1. 查看 WECOM_INTEGRATION_GUIDE.md 的故障排查部分
  2. 检查浏览器控制台错误信息
  3. 查看网络请求(F12 → Network)
  4. 参考企业微信官方文档

📄 版本信息

  • 项目版本: 1.0.0
  • Vite 版本: 5.0+
  • Node 版本: 14+
  • 最后更新: 2025年12月9日

📜 许可证

MIT License - 开源项目


🎉 项目完成!

现在你有了一个完整的、生产级别的企业微信 OAuth 2.0 认证应用。祝你使用愉快!

如有任何问题或改进建议,欢迎反馈。