后端框架 · RuoYi-Vue-Plus框架功能扩展功能
API加解密
核心说明
API 加密主要用于防止传输过程被拦截(如代理劫持)。
前端必须解密后展示,因此无论公钥/私钥最终都可被用于解密。
由于 JS 环境缺少“公钥解密”的通用实现,因此前端使用私钥进行解密。
如有更优方案,欢迎反馈与共建。
1. 使用注解 @ApiEncrypt
- 标注该注解的接口,请求参数必须加密
response参数控制响应是否加密,默认false- 加解密逻辑由过滤器处理:
org.dromara.common.encrypt.filter.CryptoFilter
补充说明:
- 当前项目里登录、注册、部分用户与租户相关接口已经使用了该能力。
- 前端只有在请求头里显式携带
isEncrypt: true时,才会对该次请求体执行加密。
2. 配置方式
后端配置:application.yml

前端配置:.env.development / .env.production

注意事项:
- 公私钥需前后端配对一致
- 后端公钥对应前端私钥;后端私钥对应前端公钥
补充说明:
- 后端配置节点为
api-decrypt,默认headerFlag是encrypt-key。 - 前端总开关是
VITE_APP_ENCRYPT,如果后端关闭该功能,前端也要同步关闭。
3. 前端开启加密
在请求头中加入 isEncrypt: true:
headers: {
isEncrypt: true
}
补充说明:
- 当前前端实现只会对
POST、PUT请求体进行加密,GET请求不会走请求体加密流程。 - 前端会随机生成 AES 密钥加密请求体,再用 RSA 处理 AES 密钥,通过
encrypt-key请求头传给后端。 - 响应如果带有同名响应头,前端会自动解密并还原成 JSON。
4. 请求/响应加解密说明
详见:关于请求响应参数解密
密钥生成说明
