Yii中的rbac很简单
建表首先打开cmd找到项目的目录
如E:\phpstudy2016\WWW\xiao1\advanced>
在目录中输入yii migrate可以建一张user表
<?php
namespace backend\controllers;
use yii\web\Controller;
class PostController extends Controller
{
public function actionAdd()
{
return $this->renderContent('添加');
}
public function actionDelete()
{
return $this->renderContent('删除');
}
public function actionUpdate()
{
return $this->renderContent('更新');
}
public function actionSelect()
{
return $this->renderContent('查询');
}
}
建表首先打开cmd找到项目的目录
如E:\phpstudy2016\WWW\xiao1\advanced>
在目录中输入yii migrate可以建一张user表
然后在目录中在输入yii migrate --migrationPath=@yii/rbac/migrations/
<?php
namespace backend\controllers;
use yii\web\Controller;
class PostController extends Controller
{
public function actionAdd()
{
return $this->renderContent('添加');
}
public function actionDelete()
{
return $this->renderContent('删除');
}
public function actionUpdate()
{
return $this->renderContent('更新');
}
public function actionSelect()
{
return $this->renderContent('查询');
}
}
这些都是一些权限进行测试
管理角色
角色是yii\rbac\Role类的实例, 通过\Yii::$app->authManage组件的createRole()方法可以创建, 创建角色时需要为角色确定ID. 创建完毕后, 使用\Yii::$app->authManage组件的add()方法将角色添加. 示例代码如下:
可以将以上代码定义在任意的控制器方法中, 请求运行该方法, 就会生成3个角色, 存储在PHP文件或者数据表中.取决于实现authManager组件的具体类. 我们选择的PhpManager, 则会存储在文件中.
文件位于@app/rbac目录的items.php文件中:
记得在项目下建立一个rbac文件夹否则报错。
可见, 增加了author, reader, editor的3个角色.
额外的, 角色不但可以增加, 还可以删除, 使用authManager对象的方法remove(), 就可以删除:
创建角色和为角色和给用户符角色
<?php namespace backend\controllers; use yii\web\Controller; class RbacController extends Controller { //创建角色 public function actionCreaterole() { // 获取authMananger组件对象 $auth = \Yii::$app->authManager; //var_dump($auth);die; // 增加3个角色 $author = $auth->createRole('一级大哥');//创建角色 $auth->add($author);//添加角色 $reader = $auth->createRole('一级大嫂'); $auth->add($reader); $editor = $auth->createRole('一级小弟'); $auth->add($editor); // $auth->remove($editor);//删除一级小弟 } /* * 给用户赋值角色 * **/ public function actionUser() { // 获取authMananger组件对象 $auth = \Yii::$app->authManager; $author = $auth->createRole('一级大哥');//创建角色 $reader = $auth->createRole('一级大嫂'); // 为用户分配角色 $auth->assign($author, 1);//这样这个一级大哥就是角色为1的用户 $auth->assign($reader, 1);//也可以同时为一个人符多个角色 // $auth->assign($reader, 3); // $auth->assign($reader, 4); // $auth->assign($editor, 5); // 2, 3, 4, 5是不同的用户ID. } }
运行此代码你会在rbac文件夹下的assignments.php中发现用户附角色成功
<?php return [ 1 => [ '一级大哥', '一级大嫂', ], ]
用yii自带登录进行验证就可
运行此代码你会在rbac文件夹下的assignments.php中发现用户附角色成功
// 定义过滤器的方法 public function behaviors() { return [ // 访问过滤控制器 'access' => [ 'class' => AccessControl::className(), 'only' => ['add', 'delete', 'update', 'select'], 'rules' => [ // author角色的访问授权 [ 'allow' => true, 'actions' => ['add', 'update'], 'roles' => ['一级大哥'], ], // // editor角色的访问授权 // [ // 'allow' => true, // 'actions' => ['update', 'select', 'delete'], // 'roles' => ['editor'], // ], // // reader的访问授权 // [ // 'allow' => true, // 'actions' => ['select'], // 'roles' => ['reader'], // ], ], ], ]; }
更新一个完整的