角色设计
资源角色设计器
如需新建资源角色,通过 Jmix 工具窗口 的菜单打开:
在对话框中输入角色名称和编码。
角色定义
在 Definition 标签页可以:
-
定义基础角色属性。
-
管理项目中的角色层级结构
|
角色代码是用来给用户分配角色的。如果已经有用户使用了某些角色,不要再次修改这些角色的代码。 |
角色层级结构
可以使用 Role Hierarchy 面板查看和管理角色层级结构。
上方面板直接显示角色层级结构。当前选中的角色被视为根角色。
下方面板包含带有操作按钮的工具栏以及可用角色列表。其中包括项目中定义的角色,以及来自链接项目和扩展组件的角色。
可以通过以下方式将角色列表中的角色添加到层级结构中:
-
在 Available Roles 列表中双击该角色。
-
使用右键菜单操作(在 Available Roles 列表中右键单击角色即可打开)。
-
点击 Available Roles 面板顶部的向上箭头按钮。
该角色将被添加为当前角色的父角色。
如需从层级结构中移除角色,请选中该角色并点击减号按钮,或使用右键菜单中的操作。
用户界面权限
User Interface 标签页定义了菜单项和视图的权限。
显示的是选中角色的权限:
-
Current role - 角色本身定义的可编辑权限
-
Ancestor role - 只读显示父辈的权限,可导航至角色文件
右侧的树形结构显示了主菜单的结构,包括项目定义的视图以及从框架和扩展组件继承的视图。All Views 组显示了所有无法通过主菜单直接访问的其余应用程序视图。可以借助树上方的搜索字段找到所需的视图。
默认情况下,所有菜单项和视图都是拒绝的。选择列表中的条目并在 View Permissions 面板上选择 Allow,可以添加打开相应菜单项或视图的权限。
使用树上方的工具栏展开或折叠节点。齿轮按钮用于切换展示未指定权限的视图和菜单项。
Allow all views 可以授予对所有视图的访问权限,如果只需要拒绝很少部分视图,也可以用这个选项操作。
实体权限
Entities 标签页定义了实体和属性的 CRUD 权限。
显示的是选中角色的权限:
-
Current role - 可编辑的当前角色的 CRUD 权限
-
Ancestor role - 父辈角色的 CRUD 和属性权限只读显示
右上角的表格显示了项目中定义的实体,以及从框架和扩展组件继承的实体。可以使用表格上方的搜索字段按名称筛选实体列表。
上方的工具栏包含下列操作:
-
Current project only - 切换展示继承的实体。
-
Assigned only - 切换展示无权限的实体。
所有实体操作都默认拒绝。使用表格中的复选框,可以为选中的实体赋予相应的操作权限。
下方的表显示所选实体的属性权限。默认情况下,拒绝查看和修改所有实体属性。通过选中 View 和 Modify 复选框,可以为所选属性设置必要的访问级别。
属性表格中的通配符 [*] 选项可以将说有属性标记为 View 或 Modify,包括实体中目前不存在而将来会添加的属性。
勾选实体表格中 Allow all 复选框会允许全部的 CRUD 操作以及允许 Modify 所有属性,即将选中的实体所有权限都放开。
特定权限
Specific 标签页定义了框架中各种机制的权限。
显示的是选中角色的权限:
-
Current role - 可编辑的当前角色的特定权限
-
Ancestor role - 父辈角色的权限只读显示,可导航至角色文件
框架使用特定权限来限制对各种机制的访问。在树中,可以看到从框架和扩展组件继承的许可权限。
要添加权限,请使用树上方工具栏中的加号按钮。在 Resource 控件中,指定项目中定义的策略名称。请参阅 特定策略 部分,了解如何创建特定策略。
所有特定策略都默认拒绝访问。在树中选择策略然后在 Specific Permission 面板中允许。
行级角色向导
如需创建一个新的行级角色,点击 Jmix 工具窗口 的 New → Row-level Role。
在弹出的窗口内填写角色参数。
|
为用户分配角色时使用的是角色编码,因此,如果已经将角色分配给了某些用户,就不要修改角色编码了。 |
Studio 会创建并打开一个带注解的角色接口。点击顶部操作面板的 Add Policy → JPQL Policy 可以添加 JPQL 策略:
在 Add JPQL Policy 对话框中,指定策略参数:
点击 OK。会在角色接口中添加一个定义该策略的方法。
类似的,如需添加 谓词策略,可以点击顶部操作面板的 Add Policy → Predicate Policy。然后在 Add Predicate Policy 弹窗中,指定一个实体并选择需要创建的谓词: