yii2项目实战-通过行为,解决rbac的分配问题
更新于 2016年09月25日 by 白狼 被浏览了 2129 次

首先我们感谢付费订阅的用户,那么有耐心的看我不厌其烦的讲解,本系列教程也一定不负您的众望!本篇文章我们要回归一个大主题,yii中rbac的分配是如何去实现的!都说rbac很强大,确实非常强大,等到后面你就会发现强大到什么程度呢?强大到你都会觉得自带的rbac数据表设计的都不太合理!别不信,我们先来看看如何通过行为去简单的实现其整个业务逻辑!

目前我们的BlogController有5个操作,分别是index、view、create、update和delete,我们来看看如何判断用户是否有操作这几个action的权限!

打开 RbacController,我们先把这几个路由权限添加并分配给“博客管理”这个角色。(上一篇文章我们已经把该角色分配给当前登陆的用户了哦~)

<?php
namespace backend\controllers;
use Yii;
use yii\web\Controller;
class RbacController extends Controller
{
    // 添加权限
    public function actionInit2 ()
    {
        $auth = Yii::$app->authManager;

        // 添加权限
        $blogView = $auth->createPermission('/blog/view');
        $auth->add($blogView);
        $blogCreate = $auth->createPermission('/blog/create');
        $auth->add($blogCreate);
        $blogUpdate = $auth->createPermission('/blog/update');
        $auth->add($blogUpdate);
        $blogDelete = $auth->createPermission('/blog/delete');
        $auth->add($blogDelete);

        // 分配给我们已经添加过的"博客管理"权限
        $blogManage = $auth->getRole('博客管理');
        $auth->addChild($blogManage, $blogView);
        $auth->addChild($blogManage, $blogCreate);
        $auth->addChild($blogManage, $blogUpdate);
        $auth->addChild($blogManage, $blogDelete);
    }
}

接着访问/index.php?r=rbac/init2来执行我们刚刚写好的程序。空白...空白就对了,执行结束就意外着这几个权限我们已经添加成功了!

下一步,我们通过行为来验证授权!

在backend\components创建行为类AccessControl,

继续阅读

还有60%的精彩内容,购买继续阅读