游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

利用Jackson序列化实现数据脱敏

  几天前使用了Jackson对数据的自定义序列化。突发灵感,利用此方法来简单实现接口返回数据脱敏,故写此文记录。核心思想是利用Jackson的StdSerializer,JsonSerialize,以及自己实现的数据脱敏过程。
  使用效果如下:首先在需要进行脱敏的VO字段上面标注相关脱敏注解
  调用接口即可看到脱敏效果
  实现过程如下:1。定义脱敏的过程实现CreatedbyEalenXieon202192415:52顶级的脱敏器publicinterfaceDesensitizationT{脱敏实现paramtarget脱敏对象return脱敏返回结果Tdesensitize(Ttarget);}
  比如具体的手机号脱敏器实现importcom。github。Symbol;importjava。util。regex。Matcher;importjava。util。regex。Pattern;CreatedbyEalenXieon202192415:56手机号脱敏器默认只保留前3位和后4位publicclassPhoneDesensitizationimplementsStringDesensitization{手机号正则privatestaticfinalPatternDEFAULTPATTERNPattern。compile((13〔09〕14〔579〕15〔03,59〕16〔6〕17〔0135678〕18〔09〕19〔89〕)d{8});手机号脱敏只保留前3位和后4位OverridepublicStringdesensitize(Stringtarget){MatchermatcherDEFAULTPATTERN。matcher(target);while(matcher。find()){Stringgroupmatcher。group();targettarget。replace(group,group。substring(0,3)Symbol。getSymbol(4,Symbol。STAR)group。substring(7,11));}returntarget;}}2。定义脱敏注解,并指明了使用的序列化器,注解中声明了使用的脱敏器实现packagecom。github。annotation;importcom。fasterxml。jackson。annotation。JacksonAnnotationsInside;importcom。fasterxml。jackson。databind。annotation。JsonSerialize;importcom。github。desensitization。Desensitization;importcom。github。serializer。ObjectDesensitizeSerializer;importjava。lang。annotation。;CreatedbyEalenXieon202110811:30Target({ElementType。FIELD,ElementType。ANNOTATIONTYPE})Retention(RetentionPolicy。RUNTIME)JacksonAnnotationsInsideJsonSerialize(usingObjectDesensitizeSerializer。class)DocumentedpublicinterfaceDesensitize{脱敏器实现SuppressWarnings(all)Classlt;?extendsDesensitizationlt;?desensitization();}3。实现定义的序列化器importcom。fasterxml。jackson。core。JsonGenerator;importcom。fasterxml。jackson。databind。BeanProperty;importcom。fasterxml。jackson。databind。JsonSerializer;importcom。fasterxml。jackson。databind。SerializerProvider;importcom。fasterxml。jackson。databind。ser。ContextualSerializer;importcom。fasterxml。jackson。databind。ser。std。StdSerializer;importcom。github。Symbol;importcom。github。annotation。Desensitize;importcom。github。desensitization。Desensitization;importcom。github。desensitization。DesensitizationFactory;importcom。github。desensitization。StringDesensitization;importjava。io。IOException;CreatedbyEalenXieon2021899:03脱敏序列化器publicclassObjectDesensitizeSerializerextendsStdSerializerObjectimplementsContextualSerializer{privatetransientDesensitizationObjectdesensitization;protectedObjectDesensitizeSerializer(){super(Object。class);}publicDesensitizationObjectgetDesensitization(){returndesensitization;}publicvoidsetDesensitization(DesensitizationObjectdesensitization){this。desensitizationdesensitization;}OverridepublicJsonSerializerObjectcreateContextual(SerializerProviderprov,BeanPropertyproperty){Desensitizeannotationproperty。getAnnotation(Desensitize。class);returncreateContextual(annotation。desensitization());}SuppressWarnings(unchecked)publicJsonSerializerObjectcreateContextual(Classlt;?extendsDesensitizationlt;?clazz){ObjectDesensitizeSerializerserializernewObjectDesensitizeSerializer();if(clazz!StringDesensitization。class){serializer。setDesensitization((DesensitizationObject)DesensitizationFactory。getDesensitization(clazz));}returnserializer;}Overridepublicvoidserialize(Objectvalue,JsonGeneratorgen,SerializerProviderprovider)throwsIOException{DesensitizationObjectobjectDesensitizationgetDesensitization();if(objectDesensitization!null){try{gen。writeObject(objectDesensitization。desensitize(value));}catch(Exceptione){gen。writeObject(value);}}elseif(valueinstanceofString){gen。writeString(Symbol。getSymbol(((String)value)。length(),Symbol。STAR));}else{gen。writeObject(value);}}}4。代码的设计说明
  完整代码可见:github。comEalenXieja另附基于Logback的日志脱敏方案(笔者认为这可能是全网最简单快捷的)
  原理是利用Logback的自定义日志转换器ClassicConverter1。自定义脱敏日志转换器importch。qos。logback。classic。pattern。ClassicConverter;importch。qos。logback。classic。spi。ILoggingEvent;importcom。github。desensitization。EmailDesensitization;importcom。github。desensitization。IDCardDesensitization;importcom。github。desensitization。PhoneDesensitization;importcom。github。desensitization。StringDesensitization;importjava。util。ArrayList;importjava。util。List;authorEalenXiecreateon202131810:07此Converter提供支持日志脱敏1。编写此LogbackDesensitizeConverter2。正则脱敏手机号邮箱身份证publicclassLogbackDesensitizeConverterextendsClassicConverter{protectedstaticfinalListStringDesensitizationDESENSITIZATIONLISTnewArrayList();static{手机号脱敏DESENSITIZATIONLIST。add(newPhoneDesensitization());邮箱脱敏DESENSITIZATIONLIST。add(newEmailDesensitization());身份证脱敏DESENSITIZATIONLIST。add(newIDCardDesensitization());}OverridepublicStringconvert(ILoggingEventevent){Stringcontentevent。getMessage();try{for(StringDesensitizationdesensitization:DESENSITIZATIONLIST){contentdesensitization。desensitize(content);}}catch(Exceptione){ig}returncontent;}}2。启动类为PatternLayout的静态变量defaultConverterMap新增此自定义转换器importch。qos。logback。classic。PatternLayout;importcom。github。filter。LogbackDesensitizeConverter;importorg。springframework。boot。SpringApplication;importorg。springframework。boot。autoconfigure。SpringBootApplication;importorg。springframework。cloud。client。discovery。EnableDiscoveryClient;authorEalenXiecreateon2020112414:16EnableDiscoveryClientSpringBootApplicationpublicclassApiGatewayApplication{publicstaticvoidmain(String〔〕args){日志处理方案新增一个Logback的日志脱敏转换器PatternLayout。defaultConverterMap。put(m,LogbackDesensitizeConverter。class。getName());SpringApplication。run(ApiGatewayApplication。class,args);}}
  启动后可以看到日志脱敏效果。
  作者:EalenXie
  链接:https:juejin。cnpost7018055632209051684

1。2T三缸卖到10。99万元,只剩颜值的2008,能够为法雷诺退出中国市场、DS品牌易主、标致和雪铁龙销量节节败退,这两年法系车在国内市场的表现,作为技术实力很雄厚的厂商,存在感还不如很多国产二三线品牌。新车卖不动、二手车不保值、新车……王劲现公司反诉王劲前公司未侵犯任何知识产权,不服直接比代码李根发自凹非寺量子位报道公众号QbitAI无人驾驶的知识产权纠纷案,现在又有新进展。一开始也解释过,这是前百度自动驾驶SVP王劲先后创办的两家公司的知识产权纠……27地新加入,跨境电商综试区将迎来哪些新机遇?为发挥跨境电商助力传统产业转型升级、促进产业数字化发展的积极作用,国务院日前批复同意在鄂尔多斯市、扬州市、阿拉山口市等27个城市和地区设立跨境电子商务综合试验区(以下简称综合试……打败微信的可能是小天才,差异化竞争造就领导者最近,一家市场调研机构发布了2021年第二季度全球智能手表市场份额报告,品牌份额前四名依次是:苹果、华为、三星、小天才(imoo)。你可能会问小天才是啥?如果它是个智能手表,又……90英寸全能巨无霸!海信90E7GPro电视深度测试曾无数次幻想,如果有一家只为我开放的电影院,该是多完美的体验啊。确实,对于大屏甚至巨屏的追求,消费者们一直未曾止步,虽然更清晰的画面是所有电视厂商在追求的要素,但是更大的产品尺……智能手表续航智能品牌怎么选对于智能手表来说,续航、智能、品牌,其实根据现有的技术条件,是很难融合到一起的。因此对于用户来说,只能有所舍弃。长续航的手表长续航的手表通常来说都和智能这两个字不是那么的……国产千元机哪个好?6款便宜又好的推荐给大家国产千元手机哪个好?目前市面上哪些千元机的性价比高?哪些手机便宜又好用,还省心子?下面电脑百事网精选了这几款值得买的千元手机推荐,打算买国产千元机的朋友,本文可以作为参考咯。……15块钱搞定DIY无线RGB调光灯带手机app控制RGB炫彩Tony哥的Buy家日常6月份入过一套廉价无线遥控版RGB灯带(当时的开箱晒单点我),无线遥控器的灯效就那么几种,而且纽扣电池过个把月没咋用也就没电了(实际上遥控器也被我……女性更爱用iphone,男性更爱用华为,事实真的是这样么?网上流传着这张数据图,并有网友表示:女性手机消费者更偏爱苹果,因为女性较为感性,天然的爱美和追求时尚(划重点,后面要考)。这位网友说的虽然没太大毛病,但是!重点来了!作为……什么是跨境电商,目前跨境电商有哪些值得做的平台?跨境电商就是把国内的商品卖到国外去,你把商品卖到国外就是出口,你从国外买来的商品就是进口。不知道你对亚马逊了解多少?亚马逊是电商的鼻祖,也是全球最大的电商平台,亚马……华为改方向,Mate50Pro外观大突破,两套芯片双模5G目前华为面临的问题,想必大家都清楚,因为没办法获得5G芯片,华为只好回到4G时代,为了能让手机业务继续下去,华为只能先推出4G手机维持着热度,也开始研究一些不需要芯片的行业,例……京东集团网传筹备京东资本为不实消息6月2日,针对前一日网传的由刘强东牵头的京东资本正在紧张筹备当中的传言,京东集团做出回应:以上为不实消息。6月1日,有媒体报道称,据知情人透露,京东集团旗下投资平台京东资……
小敏家徐正第几集出来,小敏家徐正是谁扮演小敏家说出很多人不清楚,可小敏家剧中徐正到底是第几集出来,很多网友就想去了解一下有关的故事,看小敏家把徐正的出场把剧情进行推动,后期能欣赏不错的情感故事给展现,但有的网友就不清……开空调制冷车内有水是咋回事?啥原因?夏天当我们在开车时基本上都会选择开空调,你遇到这种情况吗?当开空调时驾驶室会有水。我都遇到过几个4S店维修人员给我们空调厂家打电话说空调漏水,也遇到过整车路试人员给我们反馈开空……飞利浦首次探讨智能远程会议的全局构架解决方案截止至2017年末,我国企业单位数量便已接近两千万,对比我国十四亿人口,就相当于每77人就对应一家企业。然而,在这庞大数据里的企业中,仍旧使用传统会议模式的企业比比皆是,但这种……对手李小满男朋友,对手李小满扮演者对手说出来很多人不清楚,可对手剧情中李小满的男朋友是谁,很多网友就想去了解一下有关的故事,看对手剧情刚开始没有多久展现出李小满的男朋友,并她把学生的情况演特别像,但有的网友就不……鹤唳华亭太子妃流产怎么回事是陆文昔害太子妃流产的吗《鹤唳华亭》又更新了,在最新更新的剧情当中,太子妃张念之流产了,这是怎么回事呢?萧定权要处死陆文昔,是因为陆文昔害太子妃流产的吗?一起来看一下具体的情况。《鹤唳华亭》前几……蝙蝠侠为什么那么富,蝙蝠侠是个什么样的人蝙蝠侠说来很多人清楚,可他为什么那么富,很多网友就想去了解一下有关的故事,看他的家庭背景很好,而他的家中是一脉单传,让他能完全继承家中的资产,自然就变得富有,但有的网友就不清楚……干皮最爱!8款超水润又不卡粉的粉底液,好用到炸相信每个化妆的人,大概都面临过这种社死情况:精心化了一两个小时的妆,结果出门不是卡粉,就是浮粉,难道这就是福分?于是,阿宝去整理了一些风评不错的宝藏干皮粉底,主要针……猫女和蝙蝠侠结婚了吗,蝙蝠侠与猫女是哪部电影猫女和蝙蝠侠说出来很多人清楚,可他们结婚的疑问,很多网友就想去了解一下有关的故事,看他们进行结婚的事情早都进行,不过后期有人掺和进去,使得他们的婚姻就变得很不好,但有的网友就不……神秘海域什么时候上映,神秘海域演员表神秘海域说出来很多人不清楚,可神秘海域电影是什么时候上映,很多网友就想去了解一下有关的故事,看神秘海域提前公布相关的海报和预告片,好让观众能知道大概演绎的剧情,但有的网友就不清……预售16万起,最高续航600公里,小鹏P5或9月上市近日,我们从相关渠道获知,小鹏P5或将于今年9月份上市,此前新车已经公布了预售价,新车预售价为1623万元。续航方面,将提供460公里、550公里和最高600公里三种续航选择。……1。3亿资金被冻结340家店铺遭封杀!中国卖家怎么了?作者任倩文编辑何洋【亿邦动力讯】又一个跨境电商大卖家摇摇欲坠。天泽信息产业股份有限公司(以下简称天泽信息)发布关于旗下主营跨境电商出口业务的控股子公司深圳市有棵树科……刘烈宏任中国联通党组书记董事长据人民邮电报微信公众号消息,8月27日下午,中组部宣布任命,刘烈宏任中国联合网络通信集团有限公司党组书记、董事长,免去其工业和信息化部党组成员、副部长职务。刘烈宏简历……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网