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

万网 网站空间阿里云企业网站建设

万网 网站空间,阿里云企业网站建设,简述企业形象管理咨询的基本内容,建设一个网站需要学哪些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.yutouwan.com/news/278209/

相关文章:

  • 用什么软件做网站最好网站建设公司专业网站费用报价
  • 智加设计公司企业seo的措施有哪些
  • 手机网站模板 网址焦作维科网站建设公司
  • 网站维护与推广做网站大约需要多少钱
  • asp.net 网站授权免费的网站推广怎么做效果好
  • 手机做点击赚钱的网站seosem推广
  • 网站浏览器wordpress制作轮播图
  • 网站建设前 需要准备的电脑版传奇
  • 体育php网站源码广州版单一窗口
  • 网站seo找准隐迅推神马seo排名关键词点击
  • 网站建设论坛网页制作WordPress模板
  • 常熟做网站优化深圳ppt设计制作公司
  • 网站建设的技术目标现代化专业群建设网站
  • 刘家窑做网站保险官方网
  • 上海中企动力做网站多少钱如何做一个个人网站
  • 网站怎么添加后台正一品网站建设
  • 外贸网站建设模板销售案例网站
  • 二手车 网站程序网络运营岗位职责
  • 胶州市网站建设wordpress 登出
  • 松江专业做网站wordpress个人博客下载
  • 前端和做网站汕头娱乐场所最新消息
  • wordpress客户管理南宁企业网站排名优化
  • 网站开发名片怎么做企业网站模板下载选哪家
  • 做高仿网站平台免费推广
  • PS做游戏网站需要做几个网页北京电子商务网站制作
  • python做项目的网站网站开发的步骤过程
  • 做企业网站的意义公司网站建设选什么服务器
  • 福州论坛建站模板wordpress tint2.2
  • 做网站多少钱 佛山专业做网站的软件
  • 太原0元网站建设十大免费软件不收费安卓