实体数据权限控制
实体数据权限用于控制自动生成的查询操作返回的数据范围,根据请求用户或客户端的权限返回不同的数据结果集。
示例,实体Entity1
定义如下:
Entity1.json
{
"fields": {
"id": "uuid",
"name": "varchar(100)",
"createdBy": "varchar(100) value user.id"
},
"anonymous": true,
"generates": "find query"
}
实现三条数据权限规则:
- 用户身份访问返回自己创建的数据
- 客户端身份访问返回所有的数据
- 匿名访问不返回数据
设置如下:
Entity1.json
{
"filters": {
"user": "$authc.userAuthenticated -> t.createdBy = #{env.user.id}",
"client": "$authc.clientAuthenticated -> ",
"default": "1=0"
}
}
实体查询操作生成的SQL中使用
t
作为别名。
定义后用不同的身份访问接口http://localhost:8080/entity1
可以观察到后台执行SQL的变化。