You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.1 KiB

加密功能快速开始指南

🚀 5分钟快速配置

步骤 1: 安装依赖

打开终端,在项目根目录执行:

npm install crypto-js jsencrypt

步骤 2: 配置密钥

编辑 config.js,修改以下配置:

export default {
  baseUrl: 'http://localhost:8080',
  clientId: 'e5cd7e4891bf95d1d19206ce24a7b32e',
  
  // ⭐ 开启加密(生产环境设为 true开发环境可设为 false
  enableEncrypt: true,
  
  // ⭐ 配置 RSA 公钥(需要与后端保持一致)
  rsaPublicKey: `YOUR_RSA_PUBLIC_KEY_HERE`,
  
  rsaPrivateKey: '',
  // ... 其他配置
}

重要:YOUR_RSA_PUBLIC_KEY_HERE 替换为实际的 RSA 公钥!

步骤 3: 在接口中启用加密

以登录接口为例,在 api/login.js 中:

// 修改前
export function login(username, password, code, uuid) {
  return request({
    url: '/auth/login',
    method: 'post',
    data: { username, password, code, uuid }
  })
}

// 修改后(仅添加一行)
export function login(username, password, code, uuid) {
  return request({
    url: '/auth/login',
    method: 'post',
    data: { username, password, code, uuid },
    encrypt: true  // ⭐ 添加这一行
  })
}

步骤 4: 测试

运行项目,调用加密接口,检查:

  1. 请求头:是否包含 encrypt-key
  2. 请求体:是否为加密字符串
  3. 响应:是否能正常解密

📋 文件清单

改造完成后,你的项目应该包含以下文件:

stm32-iot-app/
├── utils/
│   ├── request.js         ✅ 已改造(支持加密)
│   └── crypto.js          ✅ 新增(加密工具类)
├── config.js              ✅ 已更新(加密配置)
├── api/
│   ├── login.js           ⚠️ 需手动添加 encrypt: true
│   └── login.encrypt.example.js  📄 示例文件
├── ENCRYPT_GUIDE.md       📄 详细使用文档
├── INSTALL_DEPENDENCIES.md 📄 依赖安装说明
└── QUICK_START.md         📄 本文件

🔑 如何获取 RSA 公钥

方法 1: 从后端获取

联系后端开发人员,获取 RuoYi 项目的 RSA 公钥,位置:

ruoyi-common/
  ruoyi-common-encrypt/
    src/main/java/org/dromara/common/encrypt/

方法 2: 在线生成

访问工具网站:

注意: 生成的密钥对需要与后端保持一致!


🎯 推荐配置策略

开发环境

// config.js
export default {
  enableEncrypt: false,  // 关闭加密,方便调试
  // ...
}

生产环境

// config.js
export default {
  enableEncrypt: true,  // 开启加密,保护数据
  rsaPublicKey: `实际的公钥`,
  // ...
}

条件配置

// config.js
const isDev = process.env.NODE_ENV === 'development'

export default {
  enableEncrypt: !isDev,  // 开发环境关闭,生产环境开启
  // ...
}

哪些接口需要加密?

建议对以下接口启用加密:

  • 登录/注册接口
  • 密码相关接口(修改密码、重置密码)
  • 个人信息修改接口
  • 支付相关接口
  • 敏感数据查询接口

不建议加密的接口:

  • 公开数据查询GET 请求不支持加密)
  • 验证码获取
  • 字典数据查询
  • 系统配置获取

🔧 调试技巧

1. 查看加密请求

在浏览器 Network 面板查看请求:

Request Headers:
  encrypt-key: MIGfMA0GCSqGS... (加密的 AES 密钥)
  ClientID: e5cd7e4891bf95d1d19206ce24a7b32e

Request Payload:
  U2FsdGVkX1... (加密的数据)

2. 临时关闭加密

// 方法 1: 全局关闭
config.enableEncrypt = false

// 方法 2: 单个接口关闭(移除 encrypt: true
export function login(data) {
  return request({
    url: '/login',
    method: 'post',
    data: data
    // encrypt: true  // 注释掉这行
  })
}

3. 查看错误日志

加密失败时会在控制台输出详细错误:

解密失败: Error: ...

常见问题

Q1: 提示"找不到模块 crypto-js"

答: 未安装依赖,执行 npm install crypto-js jsencrypt

Q2: 数据解密失败?

答:

  1. 检查公钥是否与后端一致
  2. 检查后端是否支持加密
  3. 检查 enableEncrypt 是否为 true

Q3: 小程序端能用吗?

答: 需要测试验证,某些小程序平台可能不支持 Node.js 模块,详见 INSTALL_DEPENDENCIES.md

Q4: 性能影响大吗?

答: 加密会增加少量计算时间(通常 < 100ms对用户体验影响很小


📚 更多文档


🆘 技术支持

如有问题,请:

  1. 查看上述文档
  2. 检查控制台错误日志
  3. 参考 RuoYi 官方文档:http://doc.ruoyi.vip/
  4. 联系项目负责人

祝你配置顺利! 🎉