RBAC学习(四)

参考文档:https://my.oschina.net/u/1388595/blog/5165558

1.数据规则

从下面几个维度来控制数据访问权限:

  • 销售人员只能看自己的数据(订单数据?)
  • 各大区销售经理只能看各地区的数据
  • 财务人员只能看金额小于1w的数据

这样数据规则的几个重点要素也清晰了,就是规则字段,规则表达式,规则值
以上三个场景对应的规则如下:

  • 规则字段:创建人, 规则表达式: =,规则值:当前登录人
  • 规则字段:所属大区,规则表达式: =,规则值:安徽大区
  • 规则字段:销售金额,规则表达式: <,规则值:10000
    | 名称 | 类型 | 字段名 |
    | ------------ | ------------ | ------------ |
    | 规则id | varchar(100) | rule_id |
    | 规则名称 | varchar(100) | rule_name |
    | 规则表达式 | varchar(50) | rule_conditions |
    | 规则值 | varchar(100) | rule_value |

说明:
条件表达式:大于/大于等于/等于/小于等于/包含/模糊/不等于
规则值:指定值(固定值/系统上下文变量)

2.关联资源、用户

2.1 规则与资源做关联

光有规则还不够,还需要把规则和资源跟用户进行绑定,permission表和rule表之间做一个中间表:

名称 类型 字段名
id varchar(100) id
规则id varchar(100) rule_id
权限id varchar(100) perms_id

在应用设计上需要一个单独的数据规则管理功能,方便录入数据规则,然后在资源管理界面(比如角色权限配置页面)寻找内置的数据规则进行资源与规则的绑定。

2.2 规则与角色做关联

在角色和资源(权限)的中间表role_permission表的基础上添加一个规则id字段
(感觉这么设计有点问题)

名称 类型 字段名
id varchar(100) id
角色id varchar(100) role_id
权限id varchar(100) perms_id
规则id(如果有多个用 分开) varchar(100)
一个角色有多个权限,一个角色对一个权限有多个规则(这不合理,如果规则之间冲突咋办,重复。比如说比如说一个地区经理查看订单数据,只能看自己地区的+金额限制?)。一个权限也对应多个规则?(还是刚才的疑问)

规则组:多个规则,AND进行连接。

posted @ 2021-10-29 17:37  LHX2018  阅读(0)  评论(0编辑  收藏  举报