首先本文所讲的权限控制有2种,一种是在数据库里建表,另一种是在框架里写文件,DbManager,PhpManager
第一种
我们先来讲第一种DbManager
1.yii config文件配置(我用的高级模板)(配置在common/config/main-local.php或者main.php)
2.然后windows+r 输入cmd命令 在您项目的根目录下输入
yii
migrate(运行这个命令,生成user表)
yii migrate [email protected]/rbac/migrations/ 运行此命令生成权限数据表
生成的表如下图
3.创建好表后接开始写代码了
<?php
namespace backend\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
class RbacController extends Controller
{
//判断有没有权限
public function beforeAction($action){
$name=$action->id;//获取方法名
$name=ucfirst($name);//首字母大写(因为我下面定义的方法首字母是大写,没有这一步会报错,您也可以把方法写成小写的,就没有这一步了)
$user = \Yii::$app->user;//获取用户登录得信息
if (! $user->can($name)) {
echo $this->renderContent('没有权限执行该操作');die;
}else{
return true;
}
}
public function actionAdd()
{
return $this->renderContent('添加');
}
public function actionDelete()
{
return $this->renderContent('删除');
}
public function actionUpdate()
{
return $this->renderContent('更新');
}
public function actionSelect()
{
return $this->renderContent('查询');
}
//写 一个方法
public function actionAuth()
{
// 获取authMananger组件对象
$auth = \Yii::$app->authManager;
// 增加角色
$wpf = $auth->createRole('管理员');
$auth->add($wpf);
//用户添加角色
$auth->assign($wpf,1);
// 增加权限
$postAdd = $auth->createPermission('Add');
$postAdd->description = '文章添加';
$auth->add($postAdd);
$postDelete = $auth->createPermission('Delete');
$postDelete->description = '文章删除';
$auth->add($postDelete);
$postUpdate = $auth->createPermission('Update');
$postUpdate->description = '文章编辑';
$auth->add($postUpdate);
$postSelect = $auth->createPermission('Select');
$postSelect->description = '文章查看';
$auth->add($postSelect);
// 为角色赋予权限
$auth->addChild($wpf, $postAdd);// 作者 添加文章
$auth->addChild($wpf, $postUpdate);// 作者 编辑文章
}
}
写完之后用户只有添加和修改的权限,删除和查看没有权限
第二种
讲的方法是PhpManager
和上面配置的差不多
yii config文件配置(我用的高级模板)(配置在common/config/main-local.php或者main.php)
然后在后台建一个rabc的文件夹运行上面写的php代码就会自动生成rbac里的两个文件
这是角色文件,如下图
这是权限文件和角色所拥有的权限
最后去界面检测用户是否有权限,这就是yii2简单的rabc权限控制,是不是很简单呀!!!