太原做网站个人wordpress怎样删除admin

pingmian/2025/10/9 9:01:01/文章来源:
太原做网站个人,wordpress怎样删除admin,怎么编辑网站源码,珠宝设计网站涉及隐私信息的字段需要加密存储数据库#xff0c;返回给前端时又需要解密显示正确信息。故采用mybatis自动加解密的方案#xff0c;该方案基于自定义注解拦截器进行实现。加密后的信息不支持模糊匹配#xff08;可参考业界流行方案#xff0c;基于业务需求做分词或采用其他…涉及隐私信息的字段需要加密存储数据库返回给前端时又需要解密显示正确信息。故采用mybatis自动加解密的方案该方案基于自定义注解拦截器进行实现。加密后的信息不支持模糊匹配可参考业界流行方案基于业务需求做分词或采用其他方案以支持模糊匹配本文不涉及。 网上的解决方案会有以下问题已在代码中完善解决不再细述 1.对于对象List中的需加密属性没有加密 2.重复加密导致密文有误 1.引入hutool-all依赖加解密所使用依赖 dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.10/version /dependency 2.定义加解密工具类 //加解密工具类 public class EncryptDecryptUtil {private final static Logger logger LoggerFactory.getLogger(EncryptDecryptUtil.class);/*** 对称加密的秘钥*/private final static String key 加密密钥;/*** * 加密 ** * param declaredFields paramsObject所声明的字段* * param paramsObject mapper中paramsType的实例* * return T* * throws IllegalAccessException 字段不可访问异常*/public static T T encrypt(Field[] declaredFields, T paramsObject) throws IllegalAccessException {for (Field field : declaredFields) { //取出所有被EncryptDecryptField注解的字段EncryptDecryptField sensitiveField field.getAnnotation(EncryptDecryptField.class);if (!Objects.isNull(sensitiveField)) {field.setAccessible(true);Object object field.get(paramsObject); //暂时只实现String类型的加密if (object instanceof String) {String value (String) object; //加密 Des加密工具String encryptHexStr SecureUtil.des(key.getBytes()).encryptHex(value);//logger.info(value加密后是encryptHexStr);field.set(paramsObject, encryptHexStr);}}}return paramsObject;}/*** 解密* * param result resultType的实例* * return T* * throws IllegalAccessException 字段不可访问异常*/public static T T decrypt(T result) throws IllegalAccessException {//取出resultType的类Class? resultClass result.getClass();Field[] declaredFields resultClass.getDeclaredFields();for (Field field : declaredFields) {//取出所有被EncryptDecryptField注解的字段EncryptDecryptField sensitiveField field.getAnnotation(EncryptDecryptField.class);if (!Objects.isNull(sensitiveField)) {field.setAccessible(true);Object object field.get(result); //只支持String的解密if (object instanceof String) {String value (String) object;//对注解的字段进行逐一解密String decryptStr SecureUtil.des(key.getBytes()).decryptStr(value);//logger.info({}字段需要解密,{}解密后的值是{},field.getName(),value,decryptStr);field.set(result, decryptStr);}}}return result;}} 3.创建自定义注解类 /*** 该注解定义在类上* 插件通过扫描类对象是否包含这个注解来决定是否继续扫描其中的字段注解* 这个注解要配合EncryptDecryptField注解**/ Inherited Target({ ElementType.TYPE }) Retention(RetentionPolicy.RUNTIME) public interface EncryptDecryptClass { } /*** 该注解有两种使用方式* ①配合EncryptDecryptClass加在类中的字段上* ②直接在Mapper中的方法参数上使用**/ Inherited Target({ ElementType.FIELD, ElementType.PARAMETER}) Retention(RetentionPolicy.RUNTIME) public interface EncryptDecryptField { } 4.配置自定义的mybatis读写拦截器 //写入数据拦截器 Intercepts({Signature(type ParameterHandler.class,method setParameters,args PreparedStatement.class) }) public class WriteInterceptor implements Interceptor {private final Logger logger LoggerFactory.getLogger(this.getClass());Overridepublic Object intercept(Invocation invocation) throws Throwable {ParameterHandler parameterHandler (ParameterHandler) invocation.getTarget();Object testParameparameterHandler.getParameterObject();Field parameterField parameterHandler.getClass().getDeclaredField(parameterObject);parameterField.setAccessible(true); //取出实例Object parameterObject parameterField.get(parameterHandler);if (parameterObject ! null) {MapString,Object test BeanUtil.beanToMap(parameterObject);Collection values test.values();SetObject setObj new LinkedHashSet(values);for (Object value : setObj) {if(value instanceof List){for(Object item : (List?) value){Class? parameterObjectClass item.getClass();//校验该实例的类是否被EncryptDecryptClass所注解EncryptDecryptClass encryptDecryptClass AnnotationUtils.findAnnotation(parameterObjectClass, EncryptDecryptClass.class);if (Objects.nonNull(encryptDecryptClass)) {//取出当前当前类所有字段传入加密方法Field[] declaredFields parameterObjectClass.getDeclaredFields();EncryptDecryptUtil.encrypt(declaredFields, item);}}}else {Class? parameterObjectClass value.getClass();//校验该实例的类是否被EncryptDecryptClass所注解EncryptDecryptClass encryptDecryptClass AnnotationUtils.findAnnotation(parameterObjectClass, EncryptDecryptClass.class);if (Objects.nonNull(encryptDecryptClass)) {//取出当前当前类所有字段传入加密方法Field[] declaredFields parameterObjectClass.getDeclaredFields();EncryptDecryptUtil.encrypt(declaredFields, value);}}}}return invocation.proceed();}Overridepublic Object plugin(Object o) {//这里必须写入会判定是否把当前拦截器启动return Plugin.wrap(o, this);} } //读取数据拦截器 Intercepts({Signature(type ResultSetHandler.class,method handleResultSets,args {Statement.class})}) public class ReadInterceptor implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {//取出查询的结果Object resultObject invocation.proceed();if (Objects.isNull(resultObject)) {return null;}//基于selectListif (resultObject instanceof ArrayList) {ArrayList resultList (ArrayList) resultObject;if (!CollectionUtils.isEmpty(resultList) needToDecrypt(resultList.get(0))) {for (Object result : resultList) {//逐一解密EncryptDecryptUtil.decrypt(result);}}//基于selectOne} else {if (needToDecrypt(resultObject)) {EncryptDecryptUtil.decrypt(resultObject);}}return resultObject;}private boolean needToDecrypt(Object object) {Class? objectClass object.getClass();EncryptDecryptClass sensitiveData AnnotationUtils.findAnnotation(objectClass, EncryptDecryptClass.class);return Objects.nonNull(sensitiveData);}Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);} } //配置自定义的mybatis拦截器 Configuration Component public class MybatisCryptoConfig {Beanpublic ReadInterceptor readInterceptorPlugin(){return new ReadInterceptor();}Beanpublic WriteInterceptor writeInterceptorPlugin(){return new WriteInterceptor();} } 5.在实体类上使用注解 在涉及需要加解密的实体类上使用EncryptDecryptClass注解在需要加解密的属性上使用EncryptDecryptField注解。 /*** 管理员信息*/ Data EncryptDecryptClass public class SysAdminVo {/*** 管理员id* mock 123455*/private String admin_id;/*** 管理员姓名* mock 张三*/private String admin_name;/*** 管理员手机号;* mock 13112341234*/EncryptDecryptFieldprivate String admin_phone;} 6.使用说明 在需要自动加解密的时候请使用已配置注解的实体类作为入参或出参否则不会进行加解密转换。 参考链接 【Mybatis】基于Mybatis插件注解实现敏感数据自动加解密 原生mybatis实现数据加密存储和读取 springbootmybatis自定义注解实现对数据库中的字段进行加解密

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外国ps修图网站网站的内部优化公司

1 – 添加 HTML5 doctype第一件要做的事情是创建一个符合规范的 HTML5 文档。HTML5 doctype 相比于 xhtml 版本的 doctype 而言&#xff0c;要简单明了得多&#xff1a; <!DOCTYPE html><html> ...创建一个名为 index.html 的文档&#xff0c;或者猛击这里下载这份…

网站制作哪家最好广元市网站建设

1&#xff0e;概述 意图&#xff1a;我们将已经存在的对象作为原型&#xff0c;用户可以通过复制这些原型创建新的对象。 使用场合&#xff1a;当一个系统应该独立于产品的创建、构造和表示时&#xff0c;可以使用原型模式。在原型模式中&#xff0c;产品的创建和初始化…

服装网站设计策划网站建设首页步骤

随着大数据的发展&#xff0c;计算机芯片算力的提升&#xff0c;人工智能近两年迎来了新一轮的爆发。而人工智能实现超级算力的核心就是AI芯片。AI芯片也被称为人工智能加速器&#xff0c;即专门用于处理人工智能应用中的大量计算任务的模块。2020年我国人工智能芯片市场规模约…

横琴建设局网站做海岛旅游类网站的背景及意义

本文是自己的学习笔记&#xff0c;主要参考以下资料 - 马士兵教育 1、缓存概念2、二级缓存Encache集成2.1、导入依赖2.2、 1、缓存概念 缓存是针对一些大量的重复查询&#xff0c;将查询结果存到内存中&#xff0c;减少数据库的负担。 Mybatis的缓存有三个级别。 类别说明一…

南昌建设工程质量监督网站出入库管理软件 免费

转载公众号 | DataFunSummit分享嘉宾&#xff1a;周晓欢 阿里巴巴 算法专家编辑整理&#xff1a;刘香妍 中南财经政法大学出品平台&#xff1a;DataFunSummit导读&#xff1a;实体抽取或者说命名实体识别 ( NER ) 在信息抽取中扮演着重要角色&#xff0c;常见的实体抽取多是对文…

人才网站建站百度官网首页登陆

安科瑞 须静燕 截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5…

从哪看出网站的建站公司wordpress 排版不正常

CSS 实现无限波浪边框卡片 效果展示 鼠标悬停效果&#xff0c;底部色块的边框是无限滚动的波浪 鼠标没有悬停效果 CSS 知识点 CSS 基础知识回顾使用 radial-gradient 实现波浪边框使用 anumate 属性实现波浪边框动画和控制动画运动 波浪实现原理 波浪边框的实现思路其…

网站整套模板psd网站开发类型什么意思

实验名称&#xff1a;实验四 递推问题&#xff08;一&#xff09; 实验目的&#xff1a;熟练掌握一些递推问题的处理方法&#xff1a;仔细分析&#xff0c;不断尝试推理&#xff0c;充分利用数学知识&#xff0c;找出问题中的内在规律&#xff0c;抽象出递推的数学模型。 实验…

海南建设监理协会网站做个外贸网站设计

1、还未添加到暂存区&#xff1a;git checkout -- filename 执行命令后&#xff0c;会回退到未修改之前的状态 2、已经添加到暂存区&#xff1a;git reset HEAD filename 执行命令后&#xff0c;会回退到工作区之前的状态 3、已经 commit&#xff0c;但是还未 push git reset…

移动互联网网站建设国外用的网站

文章目录 1 简介2 Docker安装与配置2.1 安装Docker2.2 配置Docker镜像加速器2.3 调整Docker资源限制 3 准备Elasticsearch Docker镜像3.1 下载Elasticsearch镜像3.2 自定义镜像配置3.3执行Docker Compose 4 运行Elasticsearch容器4.1 创建Elasticsearch容器4.2 修改配置文件4.3…

常见的电子商务网站推广方式网站如何做关键词seo

在Java应用程序中调度作业时&#xff0c;Quartz是第一个考虑的工具。 Quartz是由最流行的RDBMS支持的作业调度程序。 这真的很方便&#xff0c;并且很容易与spring集成。 为了创建石英模式&#xff0c;您必须下载石英发行版并解压缩位于crystal-2.2.3 / docs / dbTables /中的…

网站建设技术要求河南高端网站高端网站建设

vue指令-插值表达式 1、什么是插值表达式2、Vue变量声明在哪里 1、什么是插值表达式 双大括号&#xff0c;可以把vue数据变量直接显示在标签内 2、Vue变量声明在哪里 data函数返回对象上&#xff0c;用key属性声明 示例&#xff1a; <template><div id"app&…

服装网站互联网技术学什么

CF653F. Paper task 简要题面 给定括号序列SSS&#xff0c;求其中本质不同合法括号序列个数。(∣S∣≤5∗105|S|\leq 5*10^5∣S∣≤5∗105) Solution 感觉用了一个很麻烦的方法。 我们可以考虑枚举本质不同串的右端点&#xff0c;每次动态地在SAMSAMSAM里面加入末尾元素&am…

做电子手环网站需求分析丰台做网站的公司

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

让网站建设便宜到底北京网站页设计制作

基于TCP的本地通信&#xff08;客户机&#xff09;&#xff1a;创建流程&#xff1a;一、创建字节流式套接字&#xff08;socket函数&#xff09;&#xff1a; int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…

福州网站制作专业做专利费减是哪个网站

我们通常使用的笛卡尔坐标系统&#xff0c;角点通常在(0,0),即原点。初始边在x轴正半轴&#xff0c;终边与初始边成夹角。初始边逆时针旋转为正值&#xff0c;顺时针旋转为逆值。数学表示&#xff1a;角度&#xff1a;degreeradian*180/π 弧度&#xff1a;radiandegree*π/18…

汕头食品骏域网站建设WordPress站点添加ssl证书

20.有效的括号 题目链接&#xff1a;20.有效的括号 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括…

蚌埠市建设学校网站电脑视频制作软件

1.top命令找到占用CPU高的Java进程PID 2.根据进程ID找到占用CPU高的线程 ps -mp pid -o THREAD,tid | sort -r ps -mp 124682 -o THREAD,tid | sort -r 3.将指定的线程ID输出为16进制格式 printf “%x\n” tid printf "%x\n" 6384 18f0 4.jstack pid |…

在线书店网站怎么做九江有没有做网站的公司

课程地址&#xff1a;https://edu.csdn.net/course/detail/39240 你将收获 游戏辅助编程 Lua基础 C/CLua联合编程 适用人群 对游戏辅助技术感兴趣的人 课程介绍 本课程以TLB*和W*W为例子&#xff0c;讲述如何通过游戏的Lua脚本来实现一个游戏的辅助。众所周知&#xff…

石家庄做网站最好的公司哪家好公司网站模板

说明通达OA漏洞在去年上半年已爆出&#xff0c;这不趁着周末没事做&#xff0c;将源码下载下来进行复现学习。文件包含测试文件包含检测&#xff0c;payload1:ip/ispirit/interface/gateway.php?json{"url":"/general/../../mysql5/my.ini"}利用文件包含访…