zoukankan      html  css  js  c++  java
  • [moka同学笔记转载]yii2.0 rbac权限学习笔记

    下面介绍一个 yii2.0 的 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、好的,就是这么简单,不要激动,下面更简单,给角色分配许可,上代码
    
     static public function createEmpowerment($items)
        {
            $auth = Yii::$app->authManager;
    
            $parent = $auth->createRole($items['name']);
            $child = $auth->createPermission($items['description']);
    
            $auth->addChild($parent, $child);
        }
    
    5、好的,分配许可也创建完成了,我操,太尼玛简单了,继续上代码,给角色分配用户
    
     static 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
    注: 链接是小伙的联系方式,有疑问可随时咨询 http://blog.sina.com.cn/s/blog_88a65c1b0101ixwv.html

    转载于:http://blog.sina.com.cn/s/blog_88a65c1b0101izml.html

  • 相关阅读:
    POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题
    POJ 3237 Tree (树链剖分)
    2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
    HDU 4685 Prince and Princess (2013多校8 1010题 二分匹配+强连通)
    HDU 4678 Mine (2013多校8 1003题 博弈)
    HDU 4679 Terrorist’s destroy (2013多校8 1004题 树形DP)
    HDU 4681 String(2013多校8 1006题 DP)
    1036: [ZJOI2008]树的统计Count (树链剖分)
    HDU 3966 Aragorn's Story (树链剖分+树状数组)
    PHP服务端支付宝支付及回调
  • 原文地址:https://www.cnblogs.com/hsd1727728211/p/6557860.html
Copyright © 2011-2022 走看看