接口加解密
一、背景与问题
有时候需要对一些关键接口进行如下三种情况:
- 前端请求参数加密,后端解密
- 后端返回加密,前端解密
- 请求参数和后端返回 都需要加解密
二、架构与思想
通过上述三种情况,能清楚了解是在 controller
层进行一些拦截操作,所以自然而然想到了 ControllerAdvice
,对于 RequestBodyAdviceAdapter
和 ResponseBodyAdvice
进行拦截和处理即可。
当前支持 “国产SM4” 和 “AES” 两种加密算法,后期可以自行扩展
三、具体使用
3.1、选择加密算法
后端:
进入到net.lab1024.sa.base.module.support.apiencrypt.service
包结构,有两个实现类。
默认在ApiEncryptServiceSmImpl
类上加了@Service
注解,表示使用SM4
加解密;若想改为其他,可以再其他 实现ApiEncryptService
类上加注解。
前端:
进入到`src/lib/encrypt.js`` 文件,在 如下代码中进行 注释来选择加密算法
// ----------------------- 对外暴露: 加密、解密 -----------------------
outline: 'deep'
// 默认使用SM4算法
const EncryptObject = SM4;
// const EncryptObject = AES
...
3.2、修改秘钥
后端: 在ApiEncryptService
对应的实现类中找到 KEY ,进行修改;
前端: 进入到src/lib/encrypt.js
文件,找到 KEY,进行修改,要和后端保持一致。
3.3、参数加密
后端: 在需要解密的 controller方法上加上注解 @ApiDecrypt
。
前端:
1)使用 lib/axios.js
中的 postEncryptRequest
方法进行 请求加密
2)使用 src/lib/encrypt.js
中的 encryptData
方法直接进行加密
3.4、后端返回加密
后端: 在需要解密的 controller方法上加上注解 @ApiEncrypt
。
前端: 不需要任何操作,因为在lib/axios.js
已经对加密过的数据进行解密了。
四、演示案例
后端: 请看java类: AdminApiEncryptController
前端: 请看vue文件:\src\views\support\api-encrypt\api-encrypt-index.vue
支持请求参数加密、解密 | 支持返回内容加密、解密 |
联系我们
- 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
- 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
- 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
- AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大 拉你入群,一起学习 | 公众号 :六边形工程师 分享:赚钱、代码、生活 | 请 “1024创新实验室” 烩面里加肉 咖啡配胡辣汤,提神又饱腹 | 抖音 : 六边形工程师 直播:赚钱、代码、中医 |