第12章 低代码新手入门系列,西门子Mendix 设置模块的安全

449 阅读7分钟

在第11章中,我们已经学习了,在西门子Mendix如何设置应用的安全,安全分为几个级等相关知识,这一章我们就一起来学习一下,如何在应用等模块级设置安全。

设置模块安全性

设置安全或您的应用后, 在 App Explorer中的 UserManager 中添加了一个新元素,即 Security 元素。这包含模块的所有安全设置。您要设置的第一件事是模块角色。所有其他元素将使用这些角色来确定允许谁访问它们。然后这些模块角色将被分配给我们之前创建的用户角色。就像在项目安全性中看到的一样,您会看到几个选项卡,每个选项卡负责配置模块安全性的不同部分。

image.png

  • 模块角色  您可以创建可用于为模块分配不同访问级别的模块角色。
  • 页面访问  对于可通过导航项、链接或按钮访问的每个页面。包含按钮的页面本身不必是可访问的。
  • Nanoflow 访问  当 Nanoflow 附加到导航菜单中的按钮、链接或项目时,它将显示在此选项卡中并且可以分配访问权限。
  • 微流访问  当微流附加到导航菜单中的按钮、链接或项目时,它将显示在此选项卡中,并且可以分配访问权限。
  • 实体访问  可以将实体配置为具有访问规则。这些规则是每个实体访问规则一个或多个模块角色的组合。通常,每个实体访问规则只需要一个模块角色。每个规则都允许您定义是否允许该模块角色创建和/或删除对象。此外,它还允许您将每个属性和关联的访问级别设置为 - **** (none)、  read 或 read/write。该规则允许您指定授予新属性和/或关联的访问级别。您也可以在对象级别设置访问权限。

并非 Mendix 中存在的所有安全选项卡都是可见的。这是因为如果您的模块中没有某些类型的元素,这些选项卡将被隐藏。为了完整起见,它们在下面列出。

  • OData 访问  您可以定义用户是否必须使用用户名/密码登录,他们是否可以使用活动会话访问 OData 服务和/或使用自定义微流来处理身份验证。为此,您必须指定模块角色。请注意,实体访问也将被应用。
  • REST 访问  您可以定义用户是否必须使用用户名/密码登录,他们是否可以使用活动会话访问 REST 服务和/或使用自定义微流来处理身份验证。为此,您必须指定模块角色。请注意,实体访问也将被应用。
  • 数据集访问  您可以定义哪些模块角色可以访问为数据集定义的参数。可以单独允许或禁止每个可能的参数值。

创建模块角色

Summerhill Hospital 的工作人员为您提供了将登录此应用程序的用户类型列表。您甚至已经创建了所需的用户角色,因此下一步将是设置模块角色。由于您只负责您自己模块的模块角色,让我们为您的 UserManager 模块打开安全设置。

  1. 在 UserManager 模块中双击 Security
  2. 模块角色部分中,双击 用户 模块角色并将其重命名为 Employee
  3. 单击 新建 以添加一个名为 Administrator的新模块角色
  4. 再次单击 新建 以添加另一个名为 KeyUser的模块角色

image.png

  1. 完成后,单击 OK

设置页面和微流访问

现在您已经了解了安全性的基础知识,是时候为微流和页面设置访问权限了。

  1. 在您的UserManager模块中双击Security
  2. 单击页面访问选项卡。
  3. 使用下图设置页面访问。

image.png

  1. 单击微流访问选项卡并使用下图设置微流访问。

image.png

  1. 完成后,单击OK

您已经配置了基本安全性,现在您已经定义了对页面和逻辑的访问权限。

设置实体访问

现在我们已经设置了页面和微流访问权限,是时候配置对我们数据的访问权限了,以便每个角色只能看到与他们相关的数据。此外,我们将决定谁可以写入数据,谁不可以。 

  1. 在 App Explorer的 UserManager 模块下,双击 Security
  2. 单击 实体访问 选项卡和 新建 以创建您的第一个规则。
  3. 在新打开的屏幕中选择所有实体,然后单击 OK

image.png

  1. 选择 管理员 作为用户角色并从下图中复制设置。单击 确定

image.png

  1. 再次 单击 新建,仅选择 Employee 实体,然后单击 确定
  2. 匹配下图中的设置,然后单击OK

image.png

  1. 再次单击 新建 ,选择 部门 和班次 实体,然后单击 确定
  2. 匹配下图中的设置,然后单击 OK

image.png

  1.  最后一次 单击 New ,选择 Employee 实体,然后单击 OK
  2. 匹配下图中的设置。确保将 EmployeeId 成员设置为 Read 并将所有其他成员设置为 Read, Write。完成后单击 确定 。

image.png

  1. 您的 实体访问 规则应如下图所示。完成后,单击 OK

image.png

请注意,即使您已授予 管理员 和 KeyUser 角色的 完全写入权限, Shift 实体的 ShiftId 属性也 仅允许 读取 权限。这是因为它是 自动编号 实体类型。

将模块角色分配给用户角色

现在是时候将注意力转移到应用程序安全上了。 

  1. 双击  应用程序中的安全性。
  2. 单击 用户角色 并编辑每个用户角色,以便您拥有图像中的设置。为此,您需要选择正确的模块角色。

image.png

完成后,单击 OK

系统和管理模块

您已经看到了三个模块,但还没有讨论过——它们是 System 模块、Administration 模块和 DataGrid 模块。系统模块是您无法编辑的必需模块。它是 Mendix 运行的关键,允许您的用户登录。管理模块默认提供给您,允许您管理本地用户。该模块是可编辑的,您甚至可以根据需要将其删除。但是,建议将其保留在原处,因为它包含管理用户的基本功能。 

最后是 DataGrid 模块,它自动包含在您用于应用程序的空白 Web 应用程序模板中。我们不需要这个模块,所以我们将在下一个练习中删除它,并确保我们的应用程序通过了内置的安全检查

移除模块并验证安全检查

  1. App Explorer的 Marketplace 模块下找到DataGrid模块。********
  2. 右键单击DataGrid模块,然后单击Delete

image.png

  1. 单击警告窗口中的删除模块和用户数据
  2. 双击应用程序中的安全性。
  3. 您现在应该会看到App status参数在 Complete旁边显示一个绿色圆圈,以验证您的应用程序通过了内置的安全检查。

好了,我们今天学习了如何在模块中创建角色,并且在应用中管理角色等相关内容,下一章我们继续学习,如何使用XPath进一步提高应用的安全性。

低代码新手入门系列,快速导航