SpringBoot进阶SpringBoot如何对接口返回数
通常情况下,在我们开发一些数据敏感的项目的时候,需要对接口中的返回数据进行一个脱敏处理,例如在有些接口上会返回身份证号、手机号、家庭住址等信息,而对于这些数据的处理一般情况下我们会通过号来隐藏掉部分的关键数据。那么如何优雅的实现敏感数据的脱敏处理呢?如何优雅的实现接口数据脱敏操作?
第一步、需要定义一个用来进行数据脱敏的注解
我们通过注解的方式来定义哪些字段需要进行脱敏处理,被注解标注的字段就进行脱敏处理未被标记的字段就不需要进行脱敏处理。Retention(RetentionPolicy。RUNTIME)Target(ElementType。FIELD)JacksonAnnotationsInsideJsonSerialize(usingSensitiveJsonSerializer。class)publicinterfaceUnSensitive{SensitiveStrategystrategy();}
第二步、需要根据不同的字段,制定不同的脱敏策略publicenumSensitiveStrategy{对于用户名脱敏操作USERNAME(ss。replaceAll((S)S(S),12)),对用户身份证号进行脱敏IDCARD(ss。replaceAll((d{4})d{10}(w{4}),12)),对用户手机号进行脱敏PHONE(ss。replaceAll((d{3})d{4}(d{4}),12)),对地址进行脱敏ADDRESS(ss。replaceAll((S{3})S{2}(S)S{2},12));privatefinalFunctionString,Stringdesensitizer;SensitiveStrategy(FunctionString,Stringdesensitizer){this。desensitizerdesensitizer;}publicFunctionString,Stringdesensitizer(){returndesensitizer;}}
第三步、制定序列化实现方案
只要是添加UnSensitive注解的字段都进行脱敏处理publicclassSensitiveJsonSerializerextendsJsonSerializerStringimplementsContextualSerializer{privateSensitiveStrategysensitiveStrategy;Overridepublicvoidserialize(Strings,JsonGeneratorjsonGenerator,SerializerProviderserializerProvider)throwsIOException{jsonGenerator。writeString(sensitiveStrategy。desensitizer()。apply(s));}OverridepublicJsonSerializerlt;?createContextual(SerializerProviderserializerProvider,BeanPropertybeanProperty)throwsJsonMappingException{UnSensitiveannotationbeanProperty。getAnnotation(UnSensitive。class);if(Objects。nonNull(annotation)Objects。equals(String。class,beanProperty。getType()。getRawClass())){this。sensitiveStrategyannotation。strategy();returnthis;}returnserializerProvider。findValueSerializer(beanProperty。getType(),beanProperty);}}测试脱敏效果
第一步、定义一个User的测试类并且加上对应的脱敏注解publicclassUser{UnSensitive(strategySensitiveStrategy。USERNAME)privateStringusername;UnSensitive(strategySensitiveStrategy。IDCARD)privateStringidcard;UnSensitive(strategySensitiveStrategy。PHONE)privateStringphone;UnSensitive(strategySensitiveStrategy。ADDRESS)privateStringaddress;settergetter代码被删除}
第二步、定义测试类调用RestControllerpublicclassTestController{GetMapping(test)publicUsergetUser(){UserusernewUser();user。setUsername(张无忌);user。setIdcard(214578859632145123);user。setPhone(18545678956);user。setAddress(武当山);returnuser;}}
测试结果如图所示。总结
在实际开发过程中,数据脱敏的方式有很多种,在开发过程中,可以根据自己的需求来选择合适的数据脱敏操作来完成对于关键信息的保护。
宇宙中的庄严幻景不能错过!摄影天堂人间伊甸园与神祇最近之地三三昨天才说这天气终于凉快一点了,结果今天就是一整个大太阳,无奈又开起了空调;咱就是说困于一方小天地,还不如去往远方,寻求更广阔的视野,但若困于疫情,那也可以等疫情过后再……
如何下好先手棋中国人寿的时与势文俞燕编吴戈出品喻观财经2022年倏忽过半。在已经过去了的上半年,国际局势依然变幻莫测,我国经济面临的三重压力仍未消解。稳字当头,稳中求进,依然是经济的基本盘……
iQOO10与vivoX80都采用了V1自研芯片,哪款更值得两个手机核心配置极其接近:旗舰芯片(天玑9000和骁龙8性能、功耗差不太多)三星E5屏幕大底主摄自研V1芯片超级快充。在芯片、屏幕、拍照硬件差距不大比较接近,系统上也是同一套东……
王者之路(风云传奇)战士介绍哈喽,大家好呀,我是钟爱传奇的传奇老玩家阿燚。今天阿燚为小伙伴们带来的是关于三职业复古传奇手游王者之路风云传奇的相关攻略哦,王者之路是一款三职业复古传奇,小伙伴们对其中的那个职……
14年后,再看西单女孩任月丽,她如何把一把烂牌打好的?文思琦曾几何时,网络上出现了北漂和横漂两个流行词。这两个词承载着许多人的梦想,有人实现甚至超越,也有人半途而废。诸如王宝强、旭日阳刚、西单女孩等寻梦草根,便属……
中国垃圾国货大曝光!建议看看有没有你在用的家人们真心话!这些国货不要轻易用呀,因为你真的会爱上它别看包装不咋样,但是真的便宜又好用1。蜂花护发素(改善头发干枯)2。CJ熊果苷面膜(去黄白脸蛋)……
十月怀胎的艰难历程新手小白冲刺1000粉怀胎十月,感受到的是你在我腹中成长,我却不了解你的困惑,不知道你是在何时长出小手和小脚,何时学会挤眉弄眼多想了解你,多想走近你,我亲爱的宝贝!第1个……
背刺苹果,努比亚旗舰机18G1TB,价格降千元,这不比iph不知道大家有没有发现,如今迫使大家换手机的,要么就是电池不行了,要么就是手机存储容量不行了,要么就是手机越用越卡,无外乎就是这几点。而造成这种局面的原因就是因为,如今的软件容量……
开门红!K宝俄罗斯大奖赛夺冠,七妹强势崛起三套娃后继有人在北京冬奥会花滑项目的比赛中,俄罗斯派出了他们的杀手锏三套娃,也让本届奥运会的花滑比赛格外精彩,素有内卷之称的三套娃不负众望,在技术难度和观赏性放方面力压其他对手,一举拿下了个……
K宝新装亮相大奖赛,却被外界质疑露太多,国际比赛指日可待对于夏季奥运会来说,冬季奥运会可能显得没有那么隆重盛大,速度与激情的对决可能略微不那么足,但是因为有花样滑冰的存在,却会让冬奥会有着与众不同的美。作为舞蹈与滑冰的结合,花样滑冰……
JAVASPI机制什么是SPI机制?SPI(ServiceProviderInterface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使……
金观平维护全球产业链供应链稳定来源:经济日报当前,世界经济不确定性加大,维护全球产业链供应链韧性和稳定的要求更加迫切,国家之间的相互合作与协作至关重要。9月19日,国家主席习近平向产业链供应链韧性与稳……