限时 5折! 详情

yii2项目实战-通过行为,解决rbac的分配问题

12102 0 0

首先我们感谢付费订阅的用户,那么有耐心的看我不厌其烦的讲解,本系列教程也一定不负您的众望!

今天我们就准备结束漫长的RBAC啦,当然,看完我们今天讲的内容,你应该能够独立的实现一套RBAC管理体系了!为什么这么说呢,因为即使我们后面引入一套第三方的rbac组件,还是有很多人不喜欢他的风格,想要定制呢!

好啦,我们言归正传,看看如何通过行为解决困扰我们几节课的矛盾吧。

等等,等等,有同学上来要问了,我们在基于角色的访问控制(rbac)分配案例文末抛出的100个控制器的问题,当时说要通过行为解决的,可是上节课讲的行为听是听懂了,但是还是没解决这个100个控制器的问题呀,不还是需要手动一个一个的去附加行为吗?

容我想想,还真是这么回事。不过,我上节课说行为还有其他的附加形式,不知道你私下有没有翻翻手册呢?

还不知道怎么处理的,我提个醒,通过配置去附加行为。在你的配置文件main.php中,components同级添加如下代码,注意位置千万不要写错了。

'as myBehavior2' => MyBehavior::className(),

然后自己去尝试下效果吧,我们继续讲本篇的重点。

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

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

<?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, $blogU

继续阅读

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