相关文章推荐
乐观的青蛙  ·  RecyclerView滚动到指定位置的一种 ...·  2 月前    · 
小眼睛的手电筒  ·  使用查询语句分析Log4j日志-日志服务-阿里云·  1 月前    · 
鬼畜的柚子  ·  日志管理资产计费与使用限制-日志服务-阿里云·  1 月前    · 
爱运动的青椒  ·  3D点云可视化-阿里云帮助中心·  1 月前    · 
爱健身的充电器  ·  Python进阶语法之断言-阿里云开发者社区·  1 月前    · 
玩足球的筷子  ·  如何在json提取器中找到json数组长度- ...·  1 年前    · 
不羁的南瓜  ·  threejs实现一个固定大小的3d标点_t ...·  2 年前    · 
苦闷的手术刀  ·  实现自己的排序算法而不是使用QSortFil ...·  2 年前    · 
强健的大葱  ·  React学习(4)——向服务器请求数据并显 ...·  2 年前    · 
苦恼的冲锋衣  ·  华为手机没有谷歌服务框架,如何愉快的使用国外 ...·  2 年前    · 
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);
 
推荐文章
乐观的青蛙  ·  RecyclerView滚动到指定位置的一种姿势。-阿里云开发者社区
2 月前
小眼睛的手电筒  ·  使用查询语句分析Log4j日志-日志服务-阿里云
1 月前
鬼畜的柚子  ·  日志管理资产计费与使用限制-日志服务-阿里云
1 月前
爱运动的青椒  ·  3D点云可视化-阿里云帮助中心
1 月前
爱健身的充电器  ·  Python进阶语法之断言-阿里云开发者社区
1 月前
玩足球的筷子  ·  如何在json提取器中找到json数组长度-腾讯云开发者社区-腾讯云
1 年前
不羁的南瓜  ·  threejs实现一个固定大小的3d标点_three3d 给模型标点-CSDN博客
2 年前
苦闷的手术刀  ·  实现自己的排序算法而不是使用QSortFilterProxyModel
2 年前
强健的大葱  ·  React学习(4)——向服务器请求数据并显示 - 我自是年少 - 博客园
2 年前
苦恼的冲锋衣  ·  华为手机没有谷歌服务框架,如何愉快的使用国外软件?| 吐血整理 ...
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号