FastAdmin后台的数据隔离方案

FastAdmin后台的数据隔离,这个场景最近经常遇到,一个系统分了好多个角色/端,每个角色/端的权限不同,能看到的数据也就不同,这就涉及到数据隔离。

举个简单例子吧,用户角色为平台+业务员+机构+学员的系统,后台角色如下:

  1. 系统的最高权限是平台端,能看到所有数据;
  2. 业务员负责开拓机构,他能看到机构的数据;
  3. 机构发展学员,能看到机构下的学员数据。

后台的一些列表,比如:

  1. 机构列表,平台能看到并管理所有的,业务员只能看到他所发展的机构,机构看不到这个列表;
  2. 学员列表,平台能看到并管理所有的,业务员可以查看相关机构的,机构只能查看并管理自己机构下的;

这是两个很常见也很典型的列表,几个角色共用一个列表(后台控制器),但他们看到的数据及所能做的操作是不一样的,这就是数据隔离。

那怎么实现数据隔离呢?我用的是FastAdmin框架,就以这个框架做下讲解,以下都是后台相关的。

角色组和权限规则

  1. 预先配置好权限规则;
  2. 分配角色组的权限;

控制器

  1. 首先要在控制器里判断当前管理员的角色;
  2. 根据其角色在列表筛选中加入相应的条件;
  3. 根据其角色在模板中assign/assignConfig相应的配置;

模板页html

  1. 模板页面根据权限显示、隐藏相关的按钮和入口;
  2. 接收控制器assign/assignConfig的值显示、隐藏相关的按钮和入口;

模板页对应的js文件

  1. 权限到了js层应该会自动判断相关按钮的显示隐藏;
  2. 接收控制器assginConfig的值并显示/隐藏某些列和某些按钮。 这步操作可参阅 FastAdmin后台列表根据条件显示隐藏某一列字段

总结就是,控制器只输出相应权限的数据和配置,前端模板和JS根据权限和配置来展示这些数据。

说起来是比较简单的,具体操作起来要根据项目的业务逻辑去写代码,方方面面都要考虑周到,不然没有权限的人看到了不该看到的数据并编辑或删除了,而有权限的人反而不能正常操作,那事儿就大了。

Leave a Comment

豫ICP备19001387号-1