• Yii2框架RBAC(Role-Based Access Control)的使用


    1、在项目的common/config/main.php文件的components中添加如下代码:

       'authManager' => [
          'class' => 'yii bacDbManager',
          'itemTable' => 'auth_item',
          'assignmentTable' => 'auth_assignment',
          'itemChildTable' => 'auth_item_child',
         ],
     
    2, yii migrate --migrationPath=@yii/rbac/migrations/
        运行此命令生成权限数据表
      
    3、配置完毕,下面我们尝试着创建一个 许可 Permiassion,代码如下
     
        public function createPermission($item)
        {
            $auth = Yii::$app->authManager;
     
            $createPost = $auth->createPermission($item);
            $createPost->description = '创建了 ' . $item . ' 许可';
            $auth->add($createPost);
        }
     
    4、好的, 许可我们就创建完成了,下面我们创建一个 角色吧 roles
     
    public function createRole($item)
        {
            $auth = Yii::$app->authManager;
     
            $role = $auth->createRole($item);
            $role->description = '创建了 ' . $item . ' 角色';
            $auth->add($role);
        }
     
    5、给角色分配许可
     
     static public function createEmpowerment($items)
        {
            $auth = Yii::$app->authManager;
     
            $parent = $auth->createRole($items['name']);
            $child = $auth->createPermission($items['description']);
     
            $auth->addChild($parent, $child);
        }
     
    6、 分配许可也创建完成了,给角色分配用户
     
     static public function assign($item)
        {
            $auth = Yii::$app->authManager;
            $reader = $auth->createRole($item['name']);
            $auth->assign($reader, $item['description']);
        }
     
     
    7、验证用户是否有权限
     
     public function beforeAction($action)
        {
            $action = Yii::$app->controller->action->id;
            if(Yii::$app->user->can($action)){
                return true;
            }else{
                throw new yiiwebUnauthorizedHttpException('对不起,您现在还没获此操作的权限');
            }
        }
     
     
     
  • 相关阅读:
    提问的智慧
    Linux下Tomcat的安装配置
    Advanced Puppet 系列的前言
    一个purge参数引发的惨案——从线上hbase数据被删事故说起
    从入门到精通Puppet的实践之路
    Juno Puppet Opertaors Meetup小结
    Openstack配置文件管理的变迁之路
    如何成为一名Top DevOps Engineer
    mod_wsgi的工作模式和配置
    解决PuppetDB Failed to submit 'replace facts'问题
  • 原文地址:https://www.cnblogs.com/peteremperor/p/6547308.html
Copyright © 2020-2023  润新知