• yii2 rbac权限管理学习笔记


    下面介绍一个 yii2 的 Rbac 权限管理设置,闲话少说,直接上代码,

    1、首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php)。

    'authManager' => [
    'class' => 'yii bacDbManager',
    'itemTable' => 'auth_item',
    'assignmentTable' => 'auth_assignment',
    'itemChildTable' => 'auth_item_child',
    ],
    当然,在配置里面也可以设置 默认角色,只是我没写。Rbac 支持两种类,PhpManager 和 DbManager ,这里我使用 DbManager 。

    yii migrate --migrationPath=@yii/rbac/migrations/ 运行此命令生成权限数据表

    2、配置完毕,下面我们尝试着创建一个 许可 Permiassion,代码如下

    // 创建许可
    public function createPermission($item)
    {
    $auth = Yii::$app->authManager;

    $createPost = $auth->createPermission($item);
    $createPost->description = '创建了 ' . $item . ' 许可';
    $auth->add($createPost);
    }

    3、好的,许可我们就创建完成了,下面我们创建一个 角色吧 roles

    // 创建角色
    public function createRole($item)
    {
    $auth = Yii::$app->authManager;

    $role = $auth->createRole($item);
    $role->description = '创建了 ' . $item . ' 角色';
    $auth->add($role);
    }

    4、好的,就是这么简单,不要激动,下面更简单,给角色分配许可,上代码

    // 为角色分配许可
    public function createEmpowerment($items)
    {
    $auth = Yii::$app->authManager;

    $parent = $auth->createRole($items['name']);
    $child = $auth->createPermission($items['description']);

    $auth->addChild($parent, $child);
    }

    5、好的,分配许可也创建完成了,我操,太尼玛简单了,继续上代码,给角色分配用户

    // 给用户分配角色
    public function assign($item)
    {
    $auth = Yii::$app->authManager;
    $reader = $auth->createRole($item['name']);
    $auth->assign($reader, $item['description']);
    }


    6、好的好的,就是这么简单,我自己都他妈不敢相信啊,你相信吗???最后一步,验证用户是否有权限

    public function beforeAction($action)
    {
    $action = Yii::$app->controller->action->id;
    if(Yii::$app->user->can($action)){
    return true;
    }else{
    throw new yiiwebUnauthorizedHttpException('对不起,您现在还没获此操作的权限');
    }
    }


    好了,一口气都他妈写完了,老爽了。当然,可以创建就一定可以修改和删除,修改和删除都是多表关联操作的, Yii也为我写好了方法,当然你也可以自己去写,都是小意思了。

    数据库sql文件地址 /vendor/yiisoft/yii2/rbac

  • 相关阅读:
    abcde =(ab+cd)的平方
    求水仙花数
    VS2019 开发 MFC ACtivex (OCX)控件
    简单体验pdfjs,并且隐藏下载、打印等按钮
    体验win10的linux子系统
    nodejs 连接 mysql 查询事务处理
    Linux系統日常運維管理
    hexo豆瓣卡片安裝遇到的坑
    ZooKeeper 是什么与概述,典型用例
    K8S_Kubernetes
  • 原文地址:https://www.cnblogs.com/zqifa/p/yii2-rbac-1.html
Copyright © 2020-2023  润新知