相关文章推荐
礼貌的煎饼  ·  jQuery父级元素-阿里云·  3 月前    · 
没人理的豆芽  ·  配置字段索引以查询和分析JSON日志-日志服 ...·  3 月前    · 
勤奋的风衣  ·  Ford-Fulkerson ...·  3 月前    · 
紧张的小熊猫  ·  scRNA分析|自定义你的箱线图-统计检验, ...·  2 月前    · 
傻傻的馒头  ·  高性能异步框架Celery入坑指南-阿里云开 ...·  1 月前    · 
爱看球的海龟  ·  use c++ in keil not ...·  7 月前    · 
非常酷的冲锋衣  ·  刪除頑固的Eng英語美式鍵盤 – ...·  11 月前    · 
打篮球的抽屉  ·  八闽文脉·品福 | ...·  11 月前    · 
心软的芒果  ·  判断两个字符串数组中的元素是否相同_怎么判断 ...·  1 年前    · 
千杯不醉的回锅肉  ·  2023年6月7日市生态环境局-河源市人民政 ...·  1 年前    · 
Code  ›  【JAVA】反射获取对象/LIST中对象属性-阿里云开发者社区
object 云计算 list 阿里
https://developer.aliyun.com/article/1248834
唠叨的豆芽
2 年前
产品 解决方案 文档与社区 免费试用 定价 云市场 合作伙伴 支持与服务 了解阿里云
备案 控制台 登录/注册
开发者社区
首页
探索云世界
新手上云 云上应用构建 云上数据管理 云上探索人工智能
云计算 弹性计算 无影 存储 网络 倚天
云原生 容器 serverless 中间件 微服务 可观测 消息队列
数据库 关系型数据库 NoSQL数据库 数据仓库 数据管理工具 PolarDB开源 向量数据库

热门

Modelscope模型即服务 弹性计算 云原生 数据库 物联网 云效DevOps 龙蜥操作系统 平头哥 钉钉开放平台
大数据 大数据计算 实时数仓Hologres 实时计算Flink E-MapReduce DataWorks Elasticsearch 机器学习平台PAI 智能搜索推荐
人工智能 机器学习平台PAI 视觉智能开放平台 智能语音交互 自然语言处理 多模态模型 pythonsdk 通用模型
开发与运维 云效DevOps 钉钉宜搭 支持服务 镜像站 码上公益
问产品
动手实践
考认证
TIANCHI大赛
活动广场
任务中心 飞天Club技术沙龙 训练营 话题 开发者评测 乘风者计划 阿里云MVP 直播
下载
镜像站 技术资料 插件
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

背景


照着这篇文章 Springboot敏感字段脱敏 敲了一下例子,然后有一些需要注意的地方,这里记录一下。


代码


首先是需要引入的依赖项,如下:


    implementation 'org.assertj:assertj-core:3.21.0'
    implementation 'org.springframework:spring-aspects:5.3.13'
    implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
    implementation 'com.alibaba:fastjson:1.2.78'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework:spring-aop:5.3.14'





    


配置文件里还需要配置一下:


jasypt.encryptor.password: 71144850f4fb4cc55fc0ee6935badddf


然后其他代码看原博客就可以。


改进


这里主要写一下,改动了的地方,也就是EncryptHandler的handler方法,因为这个handler方法这能处理参数或者返回值为具体对象,也就是 UserVo 的情况,处理不了 List<UserVo> 的情况,下面直接上上代码:


private Object handler(Object obj, EncryptConstant type) throws IllegalAccessException {
        if (Objects.isNull(obj)) {
            return null;
        //判断是否是list
        Class cls2 = obj.getClass();
        if (cls2.isAssignableFrom(ArrayList.class)
                ||cls2.isAssignableFrom(List.class)
                ||cls2.isAssignableFrom(LinkedList.class)){
            List<Object> list= (List<Object>) obj;
            list.forEach(object->{
                try {
                    processObj(object,type);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
        }else {
            processObj(obj,type);
        return obj;
    private void processObj(Object obj, EncryptConstant type)  throws IllegalAccessException {
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            boolean hasSecureField = field.isAnnotationPresent(EncryptField.class);
            if (hasSecureField) {
                field.setAccessible(true);
                String realValue = (String) field.get(obj);
                String value;
                if (DECRYPT.equals(type)) {
                    value = stringEncryptor.decrypt(realValue);
                } else {
                    value = stringEncryptor.encrypt(realValue);
                field.set(obj, value);
 
推荐文章
礼貌的煎饼  ·  jQuery父级元素-阿里云
3 月前
没人理的豆芽  ·  配置字段索引以查询和分析JSON日志-日志服务-阿里云
3 月前
勤奋的风衣  ·  Ford-Fulkerson 最大流算法-阿里云开发者社区
3 月前
紧张的小熊猫  ·  scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值-阿里云开发者社区
2 月前
傻傻的馒头  ·  高性能异步框架Celery入坑指南-阿里云开发者社区
1 月前
爱看球的海龟  ·  use c++ in keil not working right - NXP Community
7 月前
非常酷的冲锋衣  ·  刪除頑固的Eng英語美式鍵盤 – ivantsoi的個人書籤
11 月前
打篮球的抽屉  ·  八闽文脉·品福 | 客家祖地宁化:中原古文化的年俗今貌-文教 - 东南网
11 月前
心软的芒果  ·  判断两个字符串数组中的元素是否相同_怎么判断两个string数组元素相等-CSDN博客
1 年前
千杯不醉的回锅肉  ·  2023年6月7日市生态环境局-河源市人民政府门户网站
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号