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的权限规则组。

实现三条数据权限规则:

  1. 用户身份访问返回自己创建的数据
  2. 客户端身份访问返回所有的数据
  3. 匿名访问不返回数据

设置如下:

~/sqls/@security.json

{
    "test": {
        "user": "$authc.userAuthenticated -> t.createdBy = #{env.user.id}",
        "client": "$authc.clientAuthenticated -> ",
        "default": "1=0"
    }
}

定义完成后,切换不同身份访问http://localhost:8080/test可以在控制台看到SQL执行的变化。

Bingosoft            updated 2018-07-23
上一篇:实体数据权限 下一篇:获取认证信息

results matching ""

    No results matching ""