参考文档:https://doc.fastadmin.net/doc/168.html
自定义接口权限
默认情况下,接口的权限完全是根据当人登录人的账号角色来判定的。
比如当前登录人是角色A,那么角色A没有菜单的权限,就访问不了这个接口。
但是,如果你想自定义的话,可以通过代码实现。很简单。
注意:菜单的名字完全是根据接口的注释来命名的。
<?php
namespace app\admin\controller;
use app\common\controller\Backend;
/**
*
*
* @icon fa fa-circle-o
*/
class Article extends Backend
{
/**
* 无需登录的方法,同时也就不需要鉴权了
* @var array
*/
protected $noNeedLogin = ['mywork1'];
/**
* 无需鉴权的方法,但需要登录
* @var array
*/
protected $noNeedRight = ['mywork2'];
/**
* Article模型对象
* @var \app\admin\model\Article
*/
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\Article;
$this->view->assign("statusList", $this->model->getStatusList());
}
public function import()
{
parent::import();
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
/**
* mywork1
* @return string
*/
public function mywork1(){
return "无需登录和鉴权";
}
/**
* mywork2
* @return string
*/
public function mywork2(){
return "无需鉴权 但是需要登录";
}
}
这样的话,即便角色A没有这个mywork2的权限,也可以访问。
自定义数据权限
https://doc.fastadmin.net/doc/controller.html#toc-3
就是说,自己就能看自己创建的数据。或者是自己只能看自己和下级创建的东西。
第一步:在数据库添加字段 admin_id int类型
第二步:在controller层加上
protected $dataLimit = 'auth'; //默认基类中为false,表示不启用,可额外使用auth和personal两个值
protected $dataLimitField = 'admin_id'; //数据关联字段,当前控制器对应的模型表中必须存在该字段
====== 注释 =======
$dataLimit = false; //表示不启用,显示所有数据
$dataLimit = 'auth'; //表示显示当前自己和所有子级管理员的所有数据
$dataLimit = 'personal'; //表示仅显示当前自己的数据