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 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: 测试
运行项目,调用加密接口,检查:
- 请求头:是否包含
encrypt-key - 请求体:是否为加密字符串
- 响应:是否能正常解密
📋 文件清单
改造完成后,你的项目应该包含以下文件:
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: 数据解密失败?
答:
- 检查公钥是否与后端一致
- 检查后端是否支持加密
- 检查
enableEncrypt是否为true
Q3: 小程序端能用吗?
答: 需要测试验证,某些小程序平台可能不支持 Node.js 模块,详见 INSTALL_DEPENDENCIES.md
Q4: 性能影响大吗?
答: 加密会增加少量计算时间(通常 < 100ms),对用户体验影响很小
📚 更多文档
- ENCRYPT_GUIDE.md - 完整使用指南
- INSTALL_DEPENDENCIES.md - 依赖安装详解
- api/login.encrypt.example.js - 代码示例
🆘 技术支持
如有问题,请:
- 查看上述文档
- 检查控制台错误日志
- 参考 RuoYi 官方文档:http://doc.ruoyi.vip/
- 联系项目负责人
祝你配置顺利! 🎉