Yii中的rbac

Yii中的rbac很简单
建表首先打开cmd找到项目的目录
如E:\phpstudy2016\WWW\xiao1\advanced>
在目录中输入yii migrate可以建一张user表

然后在目录中在输入yii migrate --migrationPath=@yii/rbac/migrations/


就可以把其他的表建出来,建表以后在控制器中的动作,完成典型的CRUD方法,方法如下。
<?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'],
//                    ],
                ],
            ],
        ];
    }

更新一个完整的




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值