第五章
细粒度数据查询权限
(下)
上一章讲解通过设计器,设计出数据查询,并在线测试。本章讲解如何快速定制数据查询,如果将业务代码中的
if else
逻辑判断去掉,如何将这种细粒度的权限集成到业务系统。
快速定制数据查询
上章定制了“查询所有员工”数据查询。下面我们通过复制的方式快速定制“查询本分公司及下属营业部员工”和“查询本营业部员工”两个数据查询。
打开权限设计器
http://localhost:8080/mydemo/metadmin/designer
按照如下步骤操作,来定制“查询本分公司及下属营业部员工”数据查询:
-
右击“查询所有员工”,选择弹出菜单中“复制”菜单项;
-
在弹出的对话框中,名称栏输入“查询本分公司及下属营业部员工”,描述栏输入“分公司用户具有权限查看”,点击“确认”按钮;
-
点击“查询本分公司及下属营业部员工”,选择“
WHERE
”标签页,修改
WHERE
条件;
-
右击“条件组”,选择“新增条件组”;
-
修改该条件组的“连接符”为“
OR
”;
-
右击刚才新增的条件组,选择“新增
二元条件”;
-
选择第一个字段为“
company.id
”
-
右击第二个字段,将该字段类型替换为“用户属性”,并选择“
companyId
”用户属性;
-
右击刚才新增的条件组,选择“新增
二元条件”;
-
选择第一个字段为“
company.parentId
”;
-
右击第二个字段,将该字段类型替换为“用户属性”,并选择“
companyId
”用户属性;
-
点击“保存”按钮。
下图示:(复制数据查询)
下图示:(改变字段类型)
按照如下步骤操作,来定制“查询本营业部员工”数据查询:
1.
右击“查询所有员工”,选择弹出菜单中“复制”菜单项;
2.
在弹出的对话框中,名称栏输入“查询本营业部员工”,描述栏输入“营业部用户具有权限查看”,点击“确认”按钮;
3.
点击“查询本营业部员工”,选择“
WHERE
”标签页,修改
WHERE
条件;
4.
右击“条件组”,选择“新增
二元条件”;
5.
选择第一个字段为“
company.id
”
6.
右击第二个字段,将该字段类型替换为“用户属性”,并选择“
companyId
”用户属性;
7.
点击“保存”按钮。
用户分类
细粒度权限控制,核心问题就是针对不同用户或者不同类型用户,采取不同控制。
Metadmin
采用用户分类来描述不同用户类型。用户分类在整个业务系统,在各个权限设置时候都可以复用。
示例程序,我们要创建三个用户分类:总公司用户、分公司用户和营业部用户。
总公司用户的规则是:用户的机构级别等于
1
;
分公司用户的规则是:用户的机构级别等于
2
;
营业部用户的规则是:用户的机构级别等于
3
。
在权限设计器执行如下步骤,完成“总公司用户”用户分类定制:
1.
右击用户分类树形结构根节点,选择“新增
用户分类”;
2.
在弹出对话框里面,名称处输入“总公司用户”;
3.
在变量窗口,定义用户属性值变量
companyLevel
,将用户属性
companyLevel
输入该变量;
4.
在变量窗口,定义固定值变量
level
,其值等于
1
;
5.
在表达式定义窗口,右击根节点,选择“添加
Binary
表达式”;
6.
第一个变量选择
companyLevel
,操作符选择“
=
”,第二个变量选择
level
;
7.
点击“保存”按钮,定制完毕。
此时,可以在线测试该用户分类是否有效。点击“测试”标签页,选择用户进行测试。
下图示:(定制总公司用户)
下图示:(测试总公司用户分类,“柴其贵”测试结果)
下图示:(测试总公司用户分类,“李朵朵”测试结果)
通过,复制方式快速定制“分公司用户”和“营业部用户”两个用户分类。具体过程在此不做叙述。
细粒度权限设置
Metadmin
专业细粒度权限管理中间件,强大优势表现为:
1.
完全将权限逻辑从业务系统中分离出来,且通过界面,引导开发人员配置出权限逻辑;
2.
这些权限逻辑可以在线测试;
3.
采用分类机制,免去了业务系统里面
if else
判断,并且非常直观地在权限设计器展现出本系统的权限逻辑;
按照如下步骤完成最后一步定制过程,(整个过程看起来比较长,熟练后
3
分钟即可定义完毕):
1.
在“权限”分类栏,新建“查询员工”权限,输入相关信息;
2.
点击“查询员工”权限;
3.
点击“新增”图标,给查询授权,新增
3
条授权策略,如下图示。
4.
点击“保存”图标。
下图示:“查询员工”细粒度授权规则:
此时,可以点击“测试查询授权”标签页,选择用户进行测试。
与业务系统集成
一般情况下,开发者会采用
String
常量形式引用权限,而不是
int
型权限
id
。
可以点击权限分类栏上面的,“导出”图标,导出常量。将常量保存到业务系统常量类。
业务系统,不管是
jsp/servlet/manager
或者任意其他地方,需要调用该权限,获取当前用户能查询到的员工。调用
MetadminService.query(
Privilege.QUERY_EMPLOYEE, user, null )
,即可获得
user
能查询到的员工数据集合(
java.util.Collection
),每个元素类型是
org.back.demo.Employee
,在设计
SQL
时输入的映射类。
Metadmin
提供了很多查询接口,还有分页、自定义查询和查询数据条数等,详情参加
javadoc
:
http://www.metadmin.com/doc/javadoc/index.html
分享到:
相关推荐
BS应用系统中的细粒度权限管理模型.pdf
java的细粒度权限和shiro权限校验 Spring + Struts + hibernate
基于SpringBoot+shiro实现数据库的细粒度动态权限管理系统 项目经过严格测试,确保可以运行!源码无需做任何更改! 基于SpringBoot+shiro实现数据库的细粒度动态权限管理系统 项目经过严格测试,确保可以运行!...
AI Challenger 2018 细粒度用户评论情感分析数据集 训练集: sentiment_analysis_trainingset.csv 为训练集数据文件,共105000条评论数据 sentiment_analysis_trainingset_annotations.docx 为数据标注说明文件 ...
共包含6大类20个细粒度要素的情感倾向.数据集分为训练、验证、测试A与测试B四部分。数据集中的评价对象按照粒度不同划分为两个层次,层次一为粗粒度的评价对象,例如评论文本中涉及的服务、位置等要素;层次二为细...
Android平台下细粒度权限管理机制设计与实现.pdf
豆瓣大众点评美团细粒度情感数据集方面情感数据集
权限控制是Web应用项目中比较关键的环节,如果不建立权限管理系统,那么一个非法用户可以轻而易举通过浏览器访问Web应用项目中的所有功能。因此需要权限管理系统进行权限检测,让经过授权的用户可以正常合法的使用已...
这是一个基于Spring Security框架的细粒度权限管理系统,使用Java语言开发,同时包含JavaScript、CSS、HTML等多种编程语言。该项目共包含2447个文件,其中主要文件类型包括JavaScript、PNG图片、CSS、HTML、JAR包、...
共包含6大类20个细粒度要素的情感倾向.数据集分为训练、验证、测试A与测试B四部分。数据集中的评价对象按照粒度不同划分为两个层次,层次一为粗粒度的评价对象,例如评论文本中涉及的服务、位置等要素;层次二为细...
Android平台细粒度权限管理系统的研究与实现.pdf
电信设备-信息系统中细粒度权限管理方法.zip
Al_challenger细粒度情感分析数据集,包含ai_challenger_sentiment_analysis_testa_20180816、ai_challenger_sentiment_analysis_trainingset_20180816、ai_challenger_sentiment_analysis_validationset_20180816
本次比赛我们提供了一个高质量的海量数据集,共包含6大类20个细粒度要素的情感倾向。参赛人员需根据标注的细粒度要素的情感倾向建立算法,对用户评论进行情感挖掘,组委将通过计算参赛者提交预测值和场景真实值之间...
【2018hit计算机系统安全】实验二:细粒度权限管理及实现root能力的分发和管理
使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例
细粒度管理Linux文件系统.pdf
动态代理加注解实现细粒度的权限拦截,具体到方法