当前位置: 首页 > article >正文

利用SpringAOP的返回通知处理数据加密返回

项目安全要求把所有返回值做加密处理,利用SpringAOP的返回切面可以简单方便的做到该需求。

@Aspect
public class ResponseDataEncryptAspect {

    private ObjectMapper objectMapper;

    public ResponseDataEncryptAspect () {
        this.objectMapper = new ObjectMapper();
        // 保持空值也被序列化
        objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
    }
	
	// 拦截Controller内带@RequestMapper的方法及衍生注解即可
    @AfterReturning(value = PointCut.CONTROLLER_POINT_CUT, returning = "res")
    public void jsonDateEncrypt(JoinPoint joinPoint, Object res){
        // 只处理JsonResult返回值
        if (res instanceof JsonResult) {
            JsonResult jsonResult = (JsonResult) res;
            Object data = jsonResult.getData();
            if (null != data) {
                // 把data转成json串,再把json串加密,再替换原来的data,vue拦截到data作全局解密,不影响已绑定的功能。
                String json = objectMapper.writeValueAsString(data);
                String cryptResult = ZYCryptUtils.encryptAES(json);
                // 在全局响应结果里添加一个布尔值,方便前端判断到底是密文还是明文
                jsonResult.setEncrypt(true);
                jsonResult.setData(cryptResult);
            }
        }
    }
}

实际效果:

在这里插入图片描述


http://www.kler.cn/a/441529.html

相关文章:

  • VUE elTree 无子级 隐藏展开图标
  • 【优选算法】6----查找总价格为目标值的两个商品
  • 16_动态提示窗口_协程延时
  • linux网络 | 传输层TCP | 认识tcp报头字段与分离
  • 使用 Box2D 库开发愤怒的小鸟游戏
  • 【C++】在线五子棋对战项目网页版
  • vulnhub靶场【DriftingBlues】之5
  • 12.16【net】[debug]SOCKET_RAW无法在热点局域网下传递,悬而未决
  • Android-Glide详解二
  • git如何撤销最近一个或几个提交
  • Redisson常用方法
  • 如何解决手机,电脑等工作室同ip关联问题
  • Springboot3.x配置类(Configuration)和单元测试
  • MySQL--》解析事务从隔离级别到死锁处理
  • Redis在库存里的应用
  • Python中工具脚本在本地共享给不同项目
  • 【C++】小乐乐求和问题的高效求解与算法对比分析
  • 深入探讨HTML页面中CSS的加载顺序
  • 大数据-179 Elasticsearch - 原理剖析 倒排索引与读写流程
  • 远程控制电脑技术让我们的生活更加简化
  • 期末复习-计算机网络应用题
  • ElementUI中el-dropdown-item点击事件无效
  • 《Vue进阶教程》第十四课:改进桶结构
  • 基于微信小程序的小区疫情防控ssm+论文源码调试讲解
  • 【RK3588 Linux 5.x 内核编程】-内核中断与SoftIRQ
  • 常见排序算法总结 (五) - 堆排序与堆操作