SQL数据权限控制
SQL数据权限控制用于使用dao执行的SQL查询。
示例:
Entity1.json
{
"fields": {
"id": "uuid",
"name": "varchar(100)",
"createdBy": "varchar(100) value user.id"
}
}
~/test.js
/**
* @anonymous
*
* @returns {Entity1[]}
*/
function _() {
const dao = require('dao');
return dao.queryList("select * from Entity1 t where @security(test1)");
}
其中@security(test)
是在SQL中进行数据权限控制的占位符,表示使用名称为test
的权限规则组。
实现三条数据权限规则:
- 用户身份访问返回自己创建的数据
- 客户端身份访问返回所有的数据
- 匿名访问不返回数据
设置如下:
~/sqls/@security.json
{
"test": {
"user": "$authc.userAuthenticated -> t.createdBy = #{env.user.id}",
"client": "$authc.clientAuthenticated -> ",
"default": "1=0"
}
}
定义完成后,切换不同身份访问http://localhost:8080/test
可以在控制台看到SQL执行的变化。