介绍
这一章,我们就来一起学习一下,如何使用XPath来提高应用的安全性。
如何使用 XPath 提高安全性
在第10章中,您了解了如何使用 XPath 来增强应用程序的安全性。就像您如何使用 XPath 获取特定数据一样,您也可以使用 XPath 限制对特定数据的访问。您可以使用在Module Security中编辑实体访问规则时找到的XPath Constraint选项卡专门执行此操作。
设置数据实体安全
掌握了这个理论,是时候确定应用程序的安全性了。Summerhill 的人员谈到希望他们的关键用户只能访问基于他们所属部门的用户子集。这确实意味着我们需要一个额外的关系来配置该访问。所以让我们开始吧!
- 打开域模型并添加从员工到部门的第二个关系。将关系设置为多对多并将其命名为Employee_Department_Security。
打开模块安全并打开实体Employee和模块角色KeyUser的实体访问规则。切换到XPath 约束选项卡并单击Path to user。
使用树形视图和员工与部门之间的两种关系以及 员工与帐户之间的关系来获得下图中的关系。单击选择。
您的 XPath 现在应该如下所示:
- 切换到Access Rights选项卡并确保UserManager.Employee_Department_Security成员设置为Read。这将防止KeyUser更改其访问权限。
- 单击确定。
- 打开您的Employee_NewEdit页面,然后从Toolbox向您的页面添加一个输入引用集选择器。确保它在员工实体的数据视图中。
- 使用您刚刚创建的新关联将数据源设置为部门名称。
- 单击确定。
- 将标题更改为管理部门。
- 右键单击小部件并选择Generate select page。
- 选择使用列表视图选择,然后单击确定。
优化 KeyUser 的实体安全性
现在您已经设置了基础知识,是时候考虑应该为KeyUser 添加的其他实体和约束了。 例如,Shift 实体的 XPath 是什么?那么部门实体呢?有区别吗?为了回答这些问题,让我们通过这个来推理。
管理员权限设置
由于每个人都知道医院有哪些科室,因此没有理由不允许KeyUser访问数据。但是将访问权限更改为只读是有意义的,因为他们没有理由更改详细信息。这听起来更像是管理员的工作。
如何限制访问权限?
由于轮班与部门有关,因此在此处限制访问是有意义的。那么问题就变成了它是否应该限于KeyUser的部门或由KeyUser管理的部门。在这种情况下,第二个选项最有意义。
现在您已经确定了应该授予的访问权限,是时候实施了!
- 将KeyUser对Department实体的访问权限更改为Full Read, No Write。
- 更新Shift的 XPath 约束以根据安全关联限制KeyUser访问。
由于您现在已经限制了访问权限,因此 KeyUser只能访问他们自己部门的员工;他们将无法看到所有员工。这是由您刚刚编写的第一个 XPath 引起的。要允许他们查看其他部门的员工,请添加附加规则。
- 单击新建以添加新规则,选择Employee作为实体,选择KeyUser作为模块角色。将默认权限设置为“读取”并使用“全部设置为” 按钮标记为“读取”以将所有属性设置为读取。
恭喜,您已经配置了您的第一个实体访问约束!Summerhill 医院的人员现在可以确定他们的关键用户管理哪些部门。
允许用户编辑自己的数据
既然您的工具箱中有这个新功能,让我们再次应用它,这一次是为了确保员工能够编辑自己的数据。
- 打开您的模块安全性并转到实体访问选项卡。
- 单击New创建新规则,选择Employee实体并单击OK。
- 选择Employee作为模块角色并将所有访问权限设置为Read/Write。
- 切换到XPath 约束选项卡并单击Path to user。
- 打开Employee_Account关系并选择Account实体。单击选择。完成后,单击确定。
- 是时候为您的属性设置访问权限了。使用下面的屏幕截图配置访问权限,然后单击确定。
您还需要为Shift实体提供 XPath 约束**。此 XPath 规则将实体限制为相应员工的部门。所有属性都应设置为 Full Read , No Write。
- 打开Shift访问规则并根据以下示例设置 XPath。完成后,单击确定。
更新主页
现在您已经配置了安全性,是时候修复主页了。虽然大多数小部件会响应安全性并隐藏自己,但容器并非如此。而且因为主页上的按钮是基于容器的,所以它们是可见的。由于员工无法访问某些页面,因此您应该使用基于模块角色的 条件可见性来隐藏它们。
- 打开Home_Web并右键单击Shifts的 卡片操作容器选择Edit condition for visible ...
在模块角色部分,选中显示所选角色的布局网格并取消选中 员工复选框。
好了,我们关于西门子Mendix如何配置应用安全的基础知识都学完了,是否感觉配置一个企业级安全的应用,其实也不难了?
下一章,我们将一起来学习一下OQL语法,一种更高级的数据操作语法,好好期待吧!
低代码新手入门系列,快速导航
- 第12章 低代码新手入门系列,西门子Mendix 设置模块的安全
- 第11章 低代码新手入门系列,西门子Mendix 安全管理
- 第10章 低代码新手入门系列,西门子Mendix XPath数据过滤
- 第9章 低代码新手入门系列,西门子Mendix 微流如何进行Debug?
- 第8章 低代码新手入门系列,西门子Mendix 创建我们的第一个微流
- 第7章 低代码新手入门系列,西门子Mendix 图形逻辑组件,微流
- 第6章 低代码新手入门系列,西门子Mendix UI页面组件
- 第5章 低代码新手入门系列,西门子Mendix页面编辑器
- 第4章 低代码新手入门系列,西门子Mendix领域模型和数据存储
- 第3章 低代码新手入门系列,西门子Mendix面向专业开发者的IDE
- 第2章 低代码新手入门系列,西门子Mendix团队如何进行协作?
- 第1章 低代码新手入门系列,西门子Mendix 平台简介