yii2.0 rbac權限學習筆記

jopen 9年前發布 | 75K 次閱讀 RBAC Web框架

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


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


 'authManager' => [

 'class' => 'yii\rbac\DbManager',

 'itemTable' => 'auth_item',

 'assignmentTable' => 'auth_assignment',

 'itemChildTable' => 'auth_item_child',

  ],
</div>

當然,在配置里面也可以設置 默認角色,只是我沒寫。Rbac 支持兩種類,PhpManagerDbManager ,這里我使用 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);

  }
</div>


3、好的,許可我們就創建完成了,下面我們創建一個 角色吧 roles


public function createRole($item)

  {

    $auth = Yii::$app->authManager;


    $role = $auth->createRole($item);

    $role->description = '創建了 ' . $item . ' 角色';

    $auth->add($role);

  }
</div>


4、好的,就是這么簡單,不要激動,下面更簡單,給角色分配許可,上代碼


 static public function createEmpowerment($items)

  {

    $auth = Yii::$app->authManager;


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

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


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

  }
</div>


5、好的,分配許可也創建完成了,我操,太尼瑪簡單了,繼續上代碼,給角色分配用戶


 static public function assign($item)

  {

    $auth = Yii::$app->authManager;

    $reader = $auth->createRole($item['name']);

    $auth->assign($reader, $item['description']);

  }
</div>



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('對不起,您現在還沒獲此操作的權限');

    }

  }
</div>



好了,一口氣都他媽寫完了,老爽了。當然,可以創建就一定可以修改和刪除,修改和刪除都是多表關聯操作的, Yii也為我寫好了方法,當然你也可以自己去寫,都是小意思了。


數據庫sql文件地址  /vendor/yiisoft/yii2/rbac

來自:http://blog.sina.com.cn/s/blog_88a65c1b0101izml.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!