幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

从零开始,手打一个权限管理系统(第十章数据权限)

  前言
  这章主要讲解如何实现对表数据权限的控制,让授权用户只能看到指定范围的数据。一、实现思路
  我们用组织机构ID(orgid)来作为数据权限的过滤字段,通过对sql语句添加where条件来实现对数据的过滤;这里我们需要用到MyBatisPlus的一个数据权限的插件DataPermissionInterceptor,通过实现自定义的数据权限处理器DataPermissionHandler,就可以满足我们在sql语句里面添加过滤条件的需求。二、主要代码
  1、自定义数据拦截器,实现DataPermissionHandler接口packagecom。ailot。cloud。base。data。datascope;importcn。hutool。core。collection。CollUtil;importcn。hutool。db。Db;importcn。hutool。db。Entity;importcom。ailot。cloud。base。common。constants。CommonConstant;importcom。ailot。cloud。base。common。exception。CheckedException;importcom。ailot。cloud。base。data。enums。DataScopeTypeEnum;importcom。ailot。cloud。base。security。constant。SecurityConstants;importcom。ailot。cloud。base。security。model。JwtUser;importcom。ailot。cloud。base。security。utils。SecurityUtils;importcom。baomidou。mybatisplus。core。toolkit。ObjectUtils;importcom。baomidou。mybatisplus。extension。plugins。handler。DataPermissionHandler;importlombok。SneakyThrows;importnet。sf。jsqlparser。expression。Expression;importnet。sf。jsqlparser。expression。StringValue;importnet。sf。jsqlparser。expression。operators。conditional。AndExpression;importnet。sf。jsqlparser。expression。operators。relational。ExpressionList;importnet。sf。jsqlparser。expression。operators。relational。InExpression;importnet。sf。jsqlparser。expression。operators。relational。ItemsList;importnet。sf。jsqlparser。schema。Column;importorg。springframework。security。core。GrantedAuthority;importjavax。sql。DataSource;importjava。util。ArrayList;importjava。util。Arrays;importjava。util。Comparator;importjava。util。List;importjava。util。stream。Collectors;publicclassDataScopeHandlerimplementsDataPermissionHandler{privatefinalDataScopePropertiesdataScopeProperties;privatefinalDataSourcedataSource;publicDataScopeHandler(DataScopePropertiesdataScopeProperties,DataSourcedataSource){this。dataScopePropertiesdataScopeProperties;this。dataSourcedataSource;}SneakyThrowsOverridepublicExpressiongetSqlSegment(Expressionwhere,StringmappedStatementId){查询需要配置数据权限的方法ListStringmapperIdsdataScopeProperties。getMapperIds();if(CollUtil。isEmpty(mapperIds)){returnwhere;}else{if(!CollUtil。contains(mapperIds,mappedStatementId)){returnwhere;}}ListStringorgIdsnewArrayList();JwtUseruserSecurityUtils。getUser();if(usernull){thrownewCheckedException(用户信息为空);}获取角色ID列表ListStringroleIdListuser。getAuthorities()。stream()。map(GrantedAuthority::getAuthority)。filter(authorityauthority。startsWith(SecurityConstants。ROLE))。map(authorityauthority。split()〔1〕)。collect(Collectors。toList());获取角色信息EntityqueryDb。use(dataSource)。query(SELECTFROMCommonConstant。UPMSDATABASE。sysrolewhereidIN(CollUtil。join(roleIdList,,)))。stream()。min(Comparator。comparingInt(oo。getInt(dstype)))。get();IntegerdsTypequery。getInt(dstype);查询全部if(DataScopeTypeEnum。ALL。getType()dsType){returnwhere;}自定义if(DataScopeTypeEnum。CUSTOM。getType()dsType){部门范围StringdsScopequery。getStr(dsscope);orgIds。addAll(Arrays。stream(dsScope。split(,))。map(String::toString)。collect(Collectors。toList()));}只查询本级if(DataScopeTypeEnum。OWNLEVEL。getType()dsType){orgIds。add(user。getOrgId());}ItemsListitemsListnewExpressionList(orgIds。stream()。map(StringValue::new)。collect(Collectors。toList()));InExpressioninExpressionnewInExpression(newColumn(CommonConstant。ORGSCOPE),itemsList);returnObjectUtils。isNotEmpty(where)?newAndExpression(where,inExpression):inExpression;}}
  简单说一下这个代码的逻辑,首先是拿到需要数据权限拦截的方法,然后获取当前用户的角色,通过角色就可以获取到数据权限类型(dstype);这里我们定义了三种类型的数据权限(全部、自定义、本级),全部就不用加where条件,自定义就是获取到指定范围dsscope的数据,本级就是当前用户所在部门的数据,然后我们只需要将这些条件拼接起来,生成一个新的sql语句就可以了。
  2、配置拦截器
  要使用数据拦截器需要在Mybatis配置文件里面初始化DataPermissionInterceptordataPermissionInterceptornewDataPermissionInterceptor();dataPermissionInterceptor。setDataPermissionHandler(newDataScopeHandler(dataScopeProperties,dataSource));MybatisPlusInterceptorinterceptornewMybatisPlusInterceptor();数据权限拦截interceptor。addInnerInterceptor(dataPermissionInterceptor);
  3、在yml文件里面配置需要拦截的方法base:datascope:mapperIds:com。ailot。cloud。upms。api。mapper。SysUserMapper。pageUser
  至此数据权限的配置就已经全部完成了,后面只需要在有拦截需求的表加上拦截字段,在yml配置文件上添加需要拦截的方法就可以实现数据权限的过滤了。三、效果展示
  当前版本tag:1。0。9
  代码仓库四、体验地址
  后台数据库只给了部分权限,报错属于正常!
  想学的老铁给点点关注吧!!!
  欢迎留言交流!!!
  我是阿咕噜,一个从互联网慢慢上岸的程序员,如果喜欢我的文章,记得帮忙点个赞哟,谢谢!

看到孙颖莎4天2次31王曼昱,终于明白张继科为什么跌落神坛了万众瞩目的乒超联赛落下帷幕,孙颖莎拿到了女团最有价值球员,不管是小组赛还是淘汰赛孙颖莎保持全胜,也以压倒性的优势击败王曼昱、陈梦、陈幸同等人夺得女团MVP。虽然孙颖莎没有带领深……人到中年,为啥总感觉浑身到处疼?是不是说明生病了?真相医生说导语:中年,就好比人生命的分水岭,将年轻人和老年人,活力和稳重,分离了开来,不仅如此,因为年龄和器官老化的原因,越l来越多的中年人身上也会开始出现一些不适的疼痛趋向或者身体症状……尼古丁有三大死敌,若戒烟难,老烟民不妨多吃,肺或许好受些为了缓解压力,每个人所采用的方式都不太相同,有些人会选择旅游或逛街,而也有一部分人却迷恋上了抽烟。虽然短时间来看香烟可以提神醒脑,缓解压力,可其中含有的尼古丁等物质不光容易让人……苹果下周二还有发布会?新机比iPhone13贵一倍国庆假期结束了,上班第一天急需来点爆炸消息让人清醒清醒!时隔大半个月,苹果第二场发布会就要来了!外媒曝光将在10月12日举行,依然是以线上的形式召开。主要的产品为AirP……iPhone14Plus市场表现毫无亮点但Pro的需求依然非投资分析公司摩根大通报告称,总体而言,iPhone14系列现阶段的销售情况好于前代产品,有迹象表明1月份从Android系统转入的用户比正常情况多。摩根大通最近下调了AAPL的……哈兰德经纪人正计划离开曼城,转会皇马哈兰德经纪人证实,他们已经在计划这名前锋离开曼城,为梦想转会皇家马德里打开大门。去年夏天,挪威人以5100万英镑的身价转会至曼城,并在目前的英超冠军联赛中度过了出色的第一……刘晓庆的不服老,揭露了内娱女明星,痴迷整容的悲哀说到娱乐圈明星最害怕的东西,那么一定就是衰老。有些人年龄刚过30多岁就开始做一些医美项目,比如在脸上填充玻尿酸或者打肉毒素。尤其是明星,他们生活在镜头之下,一些缺点会被无限的放……聚焦特斯拉潮州事故最新进展鉴定报告已给警方,不会对外公布文:懂车帝原创彩丽美〔懂车帝原创行业〕日前,据红星新闻报道,其从司法鉴定科学研究院获悉,特斯拉潮州事故有了新进展事故鉴定报告已经给到潮州警方。不过,对于鉴定结果,司法鉴定……AAAA!遂宁2家景区拟被确定为国家4A级2月28日,四川省文旅厅发布四川省文化和旅游厅关于拟确定17家旅游景区为国家4A级旅游景区的公示其中,遂宁市安居区海龙凯歌景区蓬溪县高峰山景区上榜……自然(20230223出版)一周论文导读编译李言Nature,23February2023,Volume614Issue7949《自然》2023年2月23日,第614卷,7949期天文学Astron……陈戌源两大干将被带走审查,李铁被抓,国足2026世界杯因祸得好像距离梅西率领阿根廷拿到卡塔尔世界杯的冠军没过多久,新一届的2026年的世界杯赛又要重新起航了,那么这一次对于中国男足来说,其实是挺有意思的。因为最近我们看到中国男足可谓是一……赤道几内亚队长金球奖投票被改?骆明传闻存疑,选票邮件可回溯直播吧3月2日讯赤道几内亚国家队前队长埃乔戈参加节目爆料,说2013年他的金球奖投票遭篡改,他们说我投给了梅西、C罗,还有个我不知道的人,但这三个人我都没有投。体坛周报总……
图介绍吊兰的作用与功效家中养绿植好处真不少吊兰是家庭中很常见的观叶植物,很多人都喜欢在家中养上几盆。吊兰深受人们的喜爱,不仅仅是因为它们好养,而且还有强大的空气净化功能,正所谓家有吊兰,污鬼胆寒。现在大家对吊兰非……57岁金龟子刘纯燕主持网红婚礼挣20万,穿20厘米高跟鞋童真近日,有网友爆料,57岁的前知名儿童节目主持人金龟子刘纯燕专程从北京赶往上海,主持一对新人的结婚典礼。根据公开资料,女新人的妈妈在某音是有250万粉丝的网红,在某手就更厉……图盆栽石榴的养殖方法你了解吗掌握技巧长出好吃的果实石榴不仅能在地里面进行养殖还能在盆里进行养殖,但是对于盆栽石榴的养殖方法很多的人都不大了解。其实只要掌握好技巧就不会出现任何的问题了,小编下面来分享下吧!盆栽石榴首先要选……图姬星美人可以叶插吗想繁殖更多就要掌握方法姬星美人非常的可爱,它是肉肉中的一种。在近两年很多人都喜欢在家里养殖各种肉肉,但是想要姬星美人繁殖的更多不知道什么方法可以。下面我们一起了解下吧!姬星美人的繁殖方法叶插是……危险近14年来历史高位!超145万澳洲房东正处于危机边缘央行持续加息,澳大利亚四大银行紧跟步伐,纷纷宣布加息。大规模加息影响着澳洲未来经济发展和人们的生活、消费模式。眼见大批房屋抵押贷款即将到期。房市危机正在出现。……京威股份2022年净利润实现4。37亿元同比上涨327。95本报记者许林艳3月29日晚间,京威股份发布2022年年度报告。报告期内,公司营收实现35。78亿元,同比上涨1。98;归属于上市公司股东的净利润为4。37亿元,同比上涨3……元代新龙萨迦派与宁玛派是如何建立起来的,它们有什么深远影响?我们知道,公元八、九、十世纪在藏传佛教史上是前弘期和黑暗时代。在前弘期,吐蕃佛教的发展主要是在卫藏地区,即吐蕃王朝的核心地带。尽管吐蕃王朝早在松赞干布时期就有一些寺院的修建。……做装机达人系列之二用优盘安装Windows10详解自从疫情以来,师生都在家上网课,经常出现一些教师的计算机用着用着就蓝屏了宕机的情况,此时也不能呼叫技术员上门维修,这时,我就想:教师(老教师除外,一些对计算机操作深恶痛绝的教师……图处理碗莲种子很关键养好钵莲只需三个步骤越来越多的花友喜欢种碗莲,种子买来却不知道什么时候种。其实碗莲种子可以四季随时播种,只要满足水温可达16即可。对于没有保温措施的朋友,建议在春季种植。碗莲不仅可以用种藕种……图四季海棠叶插的繁殖方法对吗正确养殖才能花开旺盛四季海棠的颜色种类非常的多,而且它的花期时间长。这也是为什么一直受大家喜欢的原因,但是想把四季海棠繁殖的更多就要掌握好方法才行。很多人都在想能不能叶插的方式。四季海棠的繁……图向日葵花语是什么沉默的爱永不改变向日葵的花语是沉默的爱、永恒的爱。,它是属于菊科、向日葵的一年生草本植物。向日葵原产于南美洲,这种植物起初是被用来供人观赏的,后来才被人们发现它的食用价值。这是一种习性非……图紫罗兰的花语是什么各种颜色代表不同寓意紫罗兰看起来鲜艳美丽,也具有一定的实用价值。而且,它还是爱情的象征,所以它的花语也离不开爱情。紫罗兰有很多种颜色,不同的颜色也代表着不同的含义。紫罗兰是一种源于欧洲、地中……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网