[moka同窗筆記轉載]yii2.0 rbac權限學習筆記

 

下面介紹一個 yii2.0 的 Rbac 權限設置,閒話少說,直接上代碼,

一、首先咱們要在 組件裏面配置一下 Rbac ,以下所示(common/config/main-local.php或者main.php)。

  'authManager' => [
  'class' => 'yii\rbac\DbManager',
  'itemTable' => 'auth_item',
  'assignmentTable' => 'auth_assignment',
  'itemChildTable' => 'auth_item_child',
   ],
固然,在配置裏面也能夠設置 默認角色,只是我沒寫。Rbac 支持兩種類,PhpManager 和 DbManager ,這裏我使用 DbManager 。


yii migrate --migrationPath=@yii/rbac/migrations/
運行此命令生成權限數據表


二、配置完畢, 下面咱們嘗試着建立一個 許可 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 \yii\web\UnauthorizedHttpException('對不起,您如今還沒獲此操做的權限');
        }
    }


好了,一口氣都他媽寫完了,老爽了。固然,能夠建立就必定能夠修改和刪除,修改和刪除都是多表關聯操做的, Yii也爲我寫好了方法,固然你也能夠本身去寫,都是小意思了。

數據庫sql文件地址  /vendor/yiisoft/yii2/rbac
注: 連接是小夥的聯繫方式,有疑問可隨時諮詢 http://blog.sina.com.cn/s/blog_88a65c1b0101ixwv.html

 

轉載於:http://blog.sina.com.cn/s/blog_88a65c1b0101izml.htmlphp

相關文章
相關標籤/搜索