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

制作网站注册登录模块的思维导图手机wap购物网站模板

制作网站注册登录模块的思维导图,手机wap购物网站模板,开发公司认领工程网站,查看关键词被搜索排名的软件springboot实现数据脱敏 怎么说呢#xff0c;写着写着发觉 ”这写的什么玩意“ 。 总的来说就是#xff0c;这篇文章并不能解决数据脱敏问题#xff0c;但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文#xff0c;本来是想基于AOP代理写着写着发觉 ”这写的什么玩意“ 。 总的来说就是这篇文章并不能解决数据脱敏问题但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文本来是想基于AOP代理实现返回数据脱敏的具体流程是 在controller做切面实现返回通知 返回通知中获取返回值对象 利用反射获取返回值字段 标有脱敏注释的字段做脱敏处理 说着好像一套一套的但事实上忽略了一个重要的问题复杂对象很难做反射例如集合ListSetMap或者对象的引用也是对象就算用多重判断深度遍历但是反射带来的耗时以及空间开销都是值得思考的总而言之这是一个很low的方案。 但是我很少用到反射并且感觉既然都写到这了不如记录一下aop和反射结合以后可能会用来实现其他有趣的功能也说不定。那就记录一下吧。 1. 引入依赖 !-- 引入aop支持 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency2. 实现两个注解 一个标注在controller方法上Service也可以 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface DesensitizeResult {}一个标注在属性上 Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface DesensitizeField {// 字段名称给字段起个名字而已没啥用String name() default 字段名;// 前面正常显示字符长度不脱敏长度int prefixShow() default 1;// 后面正常显示字符长度不脱敏长度int suffixShow() default 0;// 脱敏引用符号String symbol() default *; }3. 编写切面方法类 Aspect Component public class DesensitizeAspect {Pointcut(annotation(com.example.testdemo.annotation.DesensitizeResult))public void getDesensitizeAnno(){}/*** 返回贴面编程对返回结果result做脱敏操作* param joinPoint 切点* param result 目标方法返回结果*/AfterReturning(pointcut getDesensitizeAnno(),returning result)public void afterReturn(JoinPoint joinPoint,Object result){// 获取返回结果类的所有属性数组Class resultClass result.getClass();Field[] declaredFields resultClass.getDeclaredFields();for (Field field : declaredFields){// 循环判断属性中是否存在自定义脱敏注解DesensitizeFieldfor (Annotation annotation : field.getAnnotations()) {Class? extends Annotation aClass annotation.annotationType();if (aClass.equals(DesensitizeField.class)){DesensitizeField desensitizeField (DesensitizeField) annotation;// 对标有DesensitizeField的属性进行脱敏处理field.setAccessible(true); // 先将该属性改为允许值修改try {String originStr (String)field.get(result); // 获取原来的值// 字符串脱敏String desensitizeValue this.desensitizeStr(originStr, desensitizeField.prefixShow(),desensitizeField.suffixShow(), desensitizeField.symbol());field.set(result,desensitizeValue); // 将脱敏后的字符串写入} catch (IllegalAccessException e) {throw new RuntimeException(e);}}}}}/*** * param originStr 原字符串* param prefixShow 前置正常字符串长度* param suffixShow 后置正常字符串长度* param symbol 脱敏字符显示标志* return 脱敏后字符串*/private String desensitizeStr(String originStr, int prefixShow, int suffixShow, String symbol){int length originStr.length();// 避免out of indexprefixShow Math.min(prefixShow, length);suffixShow Math.min(suffixShow,length);// 前后显示数据超过数据是指长度处理OutOfRange处理if (prefixShowsuffixShowlength){prefixShowlength;suffixShow0;}String desensitizeValue originStr.substring(0,prefixShow)symbol.repeat(length-prefixShow-suffixShow)originStr.substring(length-suffixShow);return desensitizeValue;}} 如上代码所示只是针对单个简单对象做字段脱敏复杂对象就完了 4. 测试实体类 Data ToString public class UserInfo {private String id;private String account;private String nickname;DesensitizeField(name 真实姓名,prefixShow 1)private String realName;DesensitizeField(name 密码,prefixShow 0)private String password;DesensitizeField(name 手机号,prefixShow 3,suffixShow 1)private String mobile;DesensitizeField(name 身份证号,prefixShow 3)private String identityId;private String createTime;}5. 测试接口 RestController public class TestController {DesensitizeResult // aop切面脱敏数据GetMapping(/userInfo)public UserInfo getUserInfo(){UserInfo userInfo new UserInfo();userInfo.setId(123456);userInfo.setAccount(abcdef);userInfo.setMobile(13579246810);userInfo.setNickname(BigBoss);userInfo.setRealName(张小凡);userInfo.setIdentityId(430121200001011321);userInfo.setPassword(Mm123456#);return userInfo;} }6.测试 至此全文完毕另外盘算着下次把上面链接的方案偷过来再发一篇。
http://www.w-s-a.com/news/555043/

相关文章:

  • 教育网站模板下载做汽车网站开题报告的意义
  • 网站首页做后台链接昌平网站制作
  • 营销型门户网站建设浏览器下载免费大全
  • 快三网站开发推广普通话手抄报内容50字
  • 沈阳专业做网站开发公司asp网站搭建教程
  • 网站建设代码福州小程序开发平台
  • 了解做房产广告的网站手机版官方网站的建设
  • 如何与别的网站做友情链接做网站排名大概要多少钱
  • 东莞市锂电池网站建设HTML5怎么做自适应网站
  • 江苏城乡建设学校网站群晖建立wordpress
  • wordpress导入网站模板seo自学网官网
  • 购物网站服务器带宽北京网站开发周期
  • 同性做视频网站网站怎么添加栏目
  • 新余网站设计seo自学网站
  • 新乡个人网站建设价格wordpress数据插件
  • 你是网站设计有限公司的项目经理网站推广的重要性
  • 网站定制开发怎么写泸州设计公司有哪些
  • 上海网站建设zj kt迅速编程做网站
  • 郑州服装 网站建设网站栏目合理性
  • 平面设计在线网站最新汽油价格调整最新消息
  • 刷单网站建设wordpress缩略图 裁剪
  • 视差 网站泰州公司做网站
  • 广州网站优化系统怎么做淘客网站
  • 类似凡科互动的网站wordpress网站下载
  • 临沂网站制作公司安卓app开发实例教程
  • 泰州做网站 泰公网络科技公司网站升级中html
  • 如何做授权网站网站设计心得
  • 网站排名快速上升wordpress自动标签页
  • 做的好的手机网站有哪些万网域名交易
  • 网站怎么做漂亮点做陶瓷的公司网站