三门峡河南网站建设常德论坛尚一网市民留言

web/2025/10/3 4:02:19/文章来源:
三门峡河南网站建设,常德论坛尚一网市民留言,学生html个人网页免费模板,广州外贸公司集中地目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin#xff0c;在前端的专栏系列vue-element-admin的动态路由已详细拆解#xff0c;其最大特点是使用后端返回数据控制前端…目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin在前端的专栏系列vue-element-admin的动态路由已详细拆解其最大特点是使用后端返回数据控制前端菜单每次接口请求前会有路由拦截来获取权限和菜单列表并重新渲染页面配合若依后端自己实现的数据权限切面能够实现很好地的数据隔离和权限隔离那么现在就从代码层面分析其实现 数据隔离/权限控制 若依系统的权限控制实体分为目录--菜单--按钮最小到按钮级别也就是针对某个表可以控制其是否能够删除或新增普通用户只能查看筛选查 目录左侧菜单栏菜单耳机菜单按钮数据的增删改查操作 用户/权限/部门/岗位 权限控制主体是用户用户具有角色、部门、岗位的细分属性 角色角色可以控制菜单角色意味着该用户具备哪些数据的管理操作权限可以在角色编辑栏针对角色来控制不同的菜单项部门部门不涉及权限但涉及组织架构当树形展开部门组织架构后可以清晰明了地知道用户隶属于什么部门及其岗位是啥只是用户的某个属性岗位岗位也只是用户的某个属性岗位与角色关联比如测试组的负责人应该可以查看所有测试表的数据那么可以给这个负责人用户1个test-admin角色给其测试表的所有操作权限同理研发和营销人员都应该有1个对应的admin角色通过角色控制对应部门的菜单列表 刚才说可以通过定义角色权限来控制目录菜单实现不同的部门看不同的菜单栏那么如果同一个部门内部比如营销人员A和营销人员BA是小组长可以新增任务B只能查看和认领/修改那么这就涉及同一个表的按钮级别权限可以新建一个营销的comon角色该角色只能查看按钮 数据隔离 上面从功能层面描述了权限管理体系也就是实现从前端去控制用户的操作权限那么后端的数据如何做到数据隔离呢数据隔离就是不同部门看隶属于其部门的数据部门A和部门B的common普通用户都有查看施工监测这个目录---菜单的权限并且均有查看权限那么其查看的数据应该是跟部门绑定的这就是通过后端切面来实现的 mybatis的maaper写法 我们来看代码生成器生成的mapper怎么写的sql的where循环条件最后一行有params.dataScope的这个字符串它是入参ProjectJklc这个pojo类的某个属性这里可以把他当作1个占位符 select idselectProjectJklcList parameterTypeProjectJklc resultMapProjectJklcResultinclude refidselectProjectJklcVo/where if testgdxc ! null and gdxc #{gdxc}/ifif testzbsl ! null and zbsl #{zbsl}/ifif testgjxc ! null and gjxc #{gjxc}/ifif testscyl ! null and scyl #{scyl}/ifif testcjyl ! null and cjyl #{cjyl}/ifif testgjnl ! null and gjnl #{gjnl}/ifif testtnl ! null and tnl #{tnl}/ifif testmgzl ! null and mgzl #{mgzl}/ifif testwynbwy ! null and wynbwy #{wynbwy}/ifif testxgjy ! null and xgjy ! and xgjy #{xgjy}/if${params.dataScope}/where/select 在 ProjectJklc这个实体定义中继承了BaseEntity它有params属性是个map默认是空 public class ProjectJklc extends BaseEntity private MapString, Object params; params在何时被填充的这个sql何时被补充完整的可以查看使用这个mapper的impl调用入口有个注解DataScope(deptAlias project_jklc)这个注解中定义了deptAlias这个key翻译过来是部门表别名意味着这个value是个跨部门访问的表 /*** 查询监控量测列表* * param projectJklc 监控量测* return 监控量测*/OverrideDataScope(deptAlias project_jklc)public ListProjectJklc selectProjectJklcList(ProjectJklc projectJklc){return projectJklcMapper.selectProjectJklcList(projectJklc);} 注解和切面 DataScope注解定义有3个属性部门表别名用户表别名权限字符实现跨部门跨用户的数据隔离过滤条件 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface DataScope {/*** 部门表的别名*/public String deptAlias() default ;/*** 用户表的别名*/public String userAlias() default ;/*** 权限字符用于多个角色匹配符合要求的权限默认根据权限注解ss获取多个权限用逗号分隔开来*/public String permission() default ; } 在DataScopeAspect切面中有一系列判断其核心是首先看当前用户所属权限是否限制了本人操作过的数据只有本人能看或部门内都可以使用比如当前用户所属角色营销人员B的营销common角色若是仅仅本人数据权限就只能查user_id等于她自己的 判断中角色如果是全部数据权限/all权限不拼接sql正常情况是本部门可以访问也就是只做部门间的数据隔离那么就只拼接dept_id的SQL语句如下 if (DATA_SCOPE_ALL.equals(dataScope)){sqlString new StringBuilder();conditions.add(dataScope);break;}else if (DATA_SCOPE_DEPT.equals(dataScope)){sqlString.append(StringUtils.format( OR {}.dept_id {} , deptAlias, user.getDeptId()));} 该切面在方法调用前填充了实体中的params属性在mybaits的mapper使用时候这个实体已经有值了这样就实现了部门/用户层面的数据隔离。 前端路由拦截 那么代码生成器生成的前端代码如何配合后端来完成按钮级别的控制的呢这个就涉及到前端代码入侵在前端el-button按钮组件上有个v-hasPermi属性 el-col :span1.5el-buttontypedangerplainiconel-icon-deletesizemini:disabledmultipleclickhandleDeletev-hasPermi[system:jklc:remove]删除/el-button/el-col v-hasPermi是自定义指令用于处理操作权限。它通过获取store中的permissions来判断用户是否有操作权限如果没有则移除该元素[system:jklc:query]将被解析成system,jklc,query然后比对permission获取的后端权限list如果没有比对上就是fasle就不会选自然这个el-button组件。 import store from /storeexport default {inserted(el, binding, vnode) {const { value } bindingconst all_permission *:*:*;const permissions store.getters store.getters.permissionsif (value value instanceof Array value.length 0) {const permissionFlag valueconst hasPermissions permissions.some(permission {return all_permission permission || permissionFlag.includes(permission)})if (!hasPermissions) {el.parentNode el.parentNode.removeChild(el)}} else {throw new Error(请设置操作权限标签值)}} }

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

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

相关文章

设计教程网站推荐网站建设需要要多少钱

概览 在构建事件驱动应用时,人们面临着两大挑战:1)低延迟处理大量数据;2)实现流数据的实时摄取和转换。 结合 RisingWave 的流处理功能和 ScyllaDB 的高性能 NoSQL 数据库,可为构建事件驱动应用和数据管道…

购物网站分为几个模块wordpress如何采集优酷

前面学习函数时已经知道必须先存在一个函数然后才能使用,且这个函数的位置还要在 main()函数之前,否则的话编译时会报错。但我们写程序时,main() 函数是程序入口,程序的主要部分都在 main() 函数中,且其它函数也都要通…

企业网站案列网站建设 海拉尔

一、先来看一个需求 Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,比如对临时文件的清除,或者对某些ip地址进行拦截器. 二、springMVC自定义拦截器介绍 (1)需要实现一个接口 HandlerInterceptor. (…

缙云企业网站建设优化设计三年级上册答案

在笔者上一篇文章《内核MDL读写进程内存》简单介绍了如何通过MDL映射的方式实现进程读写操作,本章将通过如上案例实现远程进程反汇编功能,此类功能也是ARK工具中最常见的功能之一,通常此类功能的实现分为两部分,内核部分只负责读写…

厦门建设网站建站做网站费用怎么记分录

一、使用中文字符 在python源码中如果使用了中文字符,运行时会有错误,解决的办法是在源码的开头部分加入字符编码的声明,下面是一个例子:#!/usr/bin/env python# -*- coding: cp936 -*-Python Tutorial中指出,python的…

网站建设 300元网络营销常见术语

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 微信公众号:创享日记 发送关键词:前馈…

厦门做网站找谁苏州专业高端网站建设企业

首先进入PE,在PE下找到你的系统ISO镜像,解压缩,然后将镜像里的boot文件夹、sources文件夹和bootmgr文件提取出来,然后复制到你要安装的分区(比如c盘),接下来拔下U盘,重新启动计算机&…

酒店网站建设公司排名wordpress站点链接打不开网址

在mysql中,会有相关的like关键词,并且默认的是忽略大小写的。但是在postgresql和kingbase中,只有ilike关键字,并且默认是大小写敏感的。当我们使用mybatisplus的时候,默认提供的api也只有like()。这里提供一种方式来对…

成都哪个公司做网站英文企业网站建设

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 简单的场景设置 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我将向您展示风铃背后的动态 通过简单的场景设置进行模拟。一旦你有了这个想法,你就可以应用这个 技术到复杂的风铃结构。 基…

网站开发常用的技术建设电商网站的总结

$dir"C:/THsoft";//这是一个目录地址 也是根目录if (is_dir($dir)){//判断$dir是否是一个目录if ($dhopendir($dir)){//dh变量用来接收opendir的返回信息 如果为真 则执行whilewhile (($filereaddir($dh))!false){ //readdir()函数会返回一个文件的名称的echo …

网站多少流量够用免费正规大数据查询平台

目录 1.网络爬虫的作用(人话): 2.使用的工具 3.不使用程序进行网页信息的获取的操作步骤 4.如何使用程序来进行上述操作 1.打开浏览器 2.输入网址 3.发送请求 4.获取响应 5.判断响应是否成功 6.获取响应里需要的内容 7.记得最后关…

长春网站推广优化传奇世界页游

strtok函数是字符串函数库中的一个函数,函数原型如下:char *strtok(char s[], const char *delim);作用:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。例如:"hello,hi:what?is!the.matter;&…

网站建设步骤邯郸网站制作个人

今年6月,文件共享工具MOVEit Transfer曾曝出SQL 注入漏洞,能让远程攻击者访问其数据库并执行任意代码。最近,MOVEit Transfer 母公司Progress Software又披露了三个新漏洞。 这三个漏洞分别是 CVE-2023-36932、CVE-2023-36933 和 CVE-2023-36…

营销型网站建设计划书软件开发过程五个步骤

原题链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 用双指针算法,定义两个变量src和dst,一开始让src和dst指向num[ ]数组的第一个元素&a…

什么是营销型的网站杭州公司查询

目录 前言: 一、软件工程中的软件设计种类:根据宏观到微观分 (1)软件架构设计(层次划分、模块划分、职责分工): (2)软件高层设计、概要设计(功能模块的接…

tp5企业网站开发实例简单网页代码html作业

来源:智东西摘要:就扫地机器人、智能音箱、民用机器人和智能服务机器人的零售数据出发,盘点消费级机器人2018年的市场潜力。近两年,人工智能技术的迅猛发展。特别是视听觉语义理解、自然语言处理、神经网络、情感识别算法等的发展…

东坑东莞微信网站建设公司网站的搭建方案

目录 统计 Bigram 语言模型质量评价方法 神经网络语言模型 【系列笔记】 【Andrej Karpathy 神经网络从Zero到Hero】–1. 自动微分autograd实践要点 本文主要参考 大神Andrej Karpathy 大模型讲座 | 构建makemore 系列之一:讲解语言建模的明确入门,演示…

做外贸的网站怎样做电商

介绍: Java中的HashSet实现Set接口,即它不允许重复。 它在内部由HashMap支持,该哈希表基于哈希原理。 我们可以在HashSet中存储一个空值。 默认容量为16,负载系数为0.75,其中: Load factor Number of St…

做网站视频存储在哪里建大网站首页

题目描述: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他&#xff…

莱芜聊城网站建设建站宝盒开通

引言 在数据驱动的时代,数据库连接组件是众多应用程序与数据存储之间的关键桥梁。Cantian-Connector-Mysql 作为一款开源项目,正逐渐受到开发者群体的关注,下面我们将从技术亮点、应用场景、部署实操以及代码示例等维度对它展开全面解读。 …