6.2.3. 权限许可
permission - 权限许可 定义用户对系统对象或功能的权限,例如 UI 界面,实体操作等。在讨论权限许可时,这些对象称为 target - 客体。
通过给用户分配角色为用户赋予权限。
在通过角色为用户赋予特定的权限之前,用户对客体无任何权限。因此,无角色的用户没有任何权限,不能通过通用 UI 或 REST API 访问系统。 |
根据客体的不同,有以下类型的权限许可:
许可类型描述如下:
界面权限
界面可以被允许或者拒绝。
在构建主菜单和使用 Screens
接口的 create()
方法创建界面时,框架都会检查界面权限。如需在代码中检查界面权限,可以使用 Security 接口的 isScreenPermitted()
方法。
实体操作权限
对每个实体,可以设置以下权限:Create、Read、Update、Delete.
参阅 数据访问检查 章节了解框架中的不同机制如何使用实体操作权限。如需在代码中检查实体操作权限,可以使用 Security 接口的 isEntityOpPermitted()
方法。
实体属性权限
每个实体的每个属性都可以被赋予查看或者修改的权限。
参阅 数据访问检查 章节了解框架中不同机制如何使用实体属性权限。在应用程序中检查实体属性许可时,可以使用 Security 接口的 isEntityAttrPermitted()
方法。
特定功能权限
这些是任意功能的权限许可配置。项目中特定的权限是在 permissions.xml 配置文件中设置。
检查特定功能权限的示例:
@Inject
private Security security;
public void calculateBalance() {
if (!security.isSpecificPermitted("myapp.calculateBalance"))
return;
//...
}
界面组件权限
界面组件权限可以用来隐藏或者将界面中的特定 UI 组件设为只读状态,不论这些组件是否绑定了实体。界面组件权限会在框架发送 AfterInitEvent 和 BeforeShowEvent 消息之间生效。
界面组件权限与其他类型权限不同的地方在于,只限制其指定的客体的权限。也就是说除非为组件客体定义了隐藏/只读权限,否则该组件客户对于用户来说没有任何限制。 |
客体组件按照下列规则通过其路径指定: