参考文档:https://doc.fastadmin.net/doc/168.html

自定义接口权限

默认情况下,接口的权限完全是根据当人登录人的账号角色来判定的。
比如当前登录人是角色A,那么角色A没有菜单的权限,就访问不了这个接口。

但是,如果你想自定义的话,可以通过代码实现。很简单。

注意:菜单的名字完全是根据接口的注释来命名的。
image.png

image.png

  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\controller\Backend;
  4. /**
  5. *
  6. *
  7. * @icon fa fa-circle-o
  8. */
  9. class Article extends Backend
  10. {
  11. /**
  12. * 无需登录的方法,同时也就不需要鉴权了
  13. * @var array
  14. */
  15. protected $noNeedLogin = ['mywork1'];
  16. /**
  17. * 无需鉴权的方法,但需要登录
  18. * @var array
  19. */
  20. protected $noNeedRight = ['mywork2'];
  21. /**
  22. * Article模型对象
  23. * @var \app\admin\model\Article
  24. */
  25. protected $model = null;
  26. public function _initialize()
  27. {
  28. parent::_initialize();
  29. $this->model = new \app\admin\model\Article;
  30. $this->view->assign("statusList", $this->model->getStatusList());
  31. }
  32. public function import()
  33. {
  34. parent::import();
  35. }
  36. /**
  37. * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  38. * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  39. * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  40. */
  41. /**
  42. * mywork1
  43. * @return string
  44. */
  45. public function mywork1(){
  46. return "无需登录和鉴权";
  47. }
  48. /**
  49. * mywork2
  50. * @return string
  51. */
  52. public function mywork2(){
  53. return "无需鉴权 但是需要登录";
  54. }
  55. }

这样的话,即便角色A没有这个mywork2的权限,也可以访问。

自定义数据权限

https://doc.fastadmin.net/doc/controller.html#toc-3

就是说,自己就能看自己创建的数据。或者是自己只能看自己和下级创建的东西。
第一步:在数据库添加字段 admin_id int类型
第二步:在controller层加上

  1. protected $dataLimit = 'auth'; //默认基类中为false,表示不启用,可额外使用auth和personal两个值
  2. protected $dataLimitField = 'admin_id'; //数据关联字段,当前控制器对应的模型表中必须存在该字段
  3. ====== 注释 =======
  4. $dataLimit = false; //表示不启用,显示所有数据
  5. $dataLimit = 'auth'; //表示显示当前自己和所有子级管理员的所有数据
  6. $dataLimit = 'personal'; //表示仅显示当前自己的数据