6.2.3. 权限许可
permission -权限许可 定义用户对系统对象或功能的权限,例如界面,实体操作等。可以定义允许的权限,也可以定义 prohibition - 拒绝 的权限。
默认情况下,用户对对象拥有允许的权限,除非显式的定义了拒绝权限。 |
权限许可通过 sec$Permission
实体实例控制,包含以下属性:
type
– 许可类型,许可施加的对象类型。target
– 许可对象,许可施加的对象。该属性的格式基于许可类型。value
– 许可值,可选值基于许可类型。
许可类型描述如下:
PermissionType.SCREEN
– 界面许可界面标识在
target
属性中指定,value
属性值可以为 0(拒绝) 或 1(允许)。界面许可检查发生在组建系统主菜单,和每次调用 Frame 接口的
openWindow()
,openEditor()
,openLookup()
方法时。在应用程序中检查界面许可时,可以使用 Security 接口的
isScreenPermitted()
方法。PermissionType.ENTITY_OP
– 实体操作许可在
target
属性中指定 实体名 + “:” + 操作类型,操作类型有:create
,read
,update
,delete
。例如:**library$Book:delete**
。value
属性值可以为 0(拒绝)或 1(允许)。实体操作许可检查发生在使用 DataManager,数据感知可视化组件,和标准行为操作数据时,也适用于实体列表。所以,操作权限也会影响 client blocks 和 REST API 。但是在 Middleware 通过 EntityManager 操作数据时不会触发实体操作许可检查。
在应用程序中检查实体操作许可时,可以使用 Security 接口的
isEntityOpPermitted()
方法。PermissionType.ENTITY_ATTR
– 实体属性许可在
target
属性中指定 实体名 + “:” + 属性名,例如:**library$Book:name**
。value
属性值可以为 0(不可见), 1(只读) 或 2(读写)。实体属性许可只在数据感知可视化组件和 REST API 中检查。
在应用程序中检查实体属性许可时,可以使用 Security 接口的
isEntityAttrPermitted()
方法。PermissionType.SPECIFIC
– 特定功能许可。特定的许可可以用来取代角色对项目功能的许可/禁止,因为角色是许可的合集。在
target
属性中指定功能标识,value
属性值可以为 0(拒绝)或 1(允许)。项目中特点的许可在配置文件 permissions.xml 中设置。
例如:
@Inject
private Security security;
private void calculateBalance() {
if (!security.isSpecificPermitted("myapp.calculateBalance"))
return;
...
}
PermissionType.UI
– 界面组件许可在
target
属性中指定 界面标识 + “:” + 组件路径。组件路径格式描述详见下一章节。