数据权限规则
一条数据权限规则由0或1个条件表达式 + 0或1个where表达式组成,多条数据权限规则组成一个数据权限规则组。
下面通过示例来说明如何定义,假设需要实现三条数据权限规则:
- 用户身份访问返回自己创建的数据
- 客户端身份访问返回所有的数据
- 匿名访问不返回数据
这三个数据权限组成一个集合,通过一个json
对象进行表示:
{
"user": "$authc.userAuthenticated -> t.createdBy = #{env.user.id}",
"client": "$authc.clientAuthenticated -> ",
"default": "1=0"
}
这里定义了三条规则,jmms会按照定义的顺序进行判断,一旦符合规则立即中止判断,并使用该条规则制定的SQL
表达式作为where
条件拼到查询SQL中。
数据权限规则语法
- 同时指定判断条件和SQL表达式:
{condition} -> {where}
- 只有判断条件,没有SQL表达式:
{condition} ->
- 没有判断条件,只有SQL表达式:
{where}
condition
{condition}
是一个javascript
表达式,可以在此表达式中访问所有全局变量。
where
{where}
是一个SQL Where
表达式,使用t
作为实体别名,在表达式用可以通过内置的EL表达式指定变量,格式#{expr}。