多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > [置頂] (十二) yii2 rbac使用DbManager來實現后臺的權限判斷

[置頂] (十二) yii2 rbac使用DbManager來實現后臺的權限判斷

來源:程序員人生   發布時間:2015-04-17 08:58:16 閱讀次數:5421次

我用的是yii2的高級利用版本 (下載地址)


yii2 的分兩種1種是PhpManager,另外1種就是DbManager了

我下面用到的就是DbManager


第1步、配置你的mian.php


具體配置自己看yii的官網文檔吧: 文檔


return [ // ... 'components' => [ 'authManager' => [ 'class' => 'yii bacDbManager', ], // ... ], ];



第2步、生成數據表


yii migrate --migrationPath=@yii/rbac/migrations
如果不行在yii 前面增加php 


數據庫已生成數據了有4個表


auth_assignment: 用戶角色表

auth_item_child: 角色跟權限關聯表

auth_item: 保存角色或權限

auth_rule: 規則表(目前我沒有用到)


第3步、生成model


在gii中生成這個4個表的model,但是還要增加兩個model才行

復制item稍作修改就行了,命名方式你們自己定。下面是我自己命名的:

RoleForm.php PermissionForm.php
在官網文檔上可以看到yii-rbac-Role隱藏繼承的常量以下:
TYPE_PERMISSION 默許值 2
TYPE_ROLE 默許值 1
都定義在: yii bacItem(你們看文檔rbac中的Role最底下就是咯)
</pre><pre name="code" class="php">由于這兩個model都是對auth_item表進行數據操作所以呢我們這兩個model只要繼承于AuthItem.php(也就是用gii對auth_item表成后的那個文件)然后修改下我們剛才多加的兩個model(RoleForm, PermissionForm)


第4步、修改RoleForm.php、PermissionForm.php


RoleForm.php內容以下:

class RoleForm extends AuthItem { public $child;//這個是用來放權限的 public function init() { parent::init(); //常量TYPE_ROLE=1 $this->type = Item::TYPE_ROLE; } }
PermissionForm.php 內容以下: class PermissionForm extends AuthItem { public function init() { parent::init(); //常量TYPE_PERMISSION=2 $this->type = Item::TYPE_PERMISSION; } }


第5步、創建對應的controller

控制器命名根據你們自己習慣


首先說下PermissionController(用于權限管理)

表單提交時auth_item表中的name、type不要空了就好

然后我們實例化rbac中的Permission

use yii bacPermission; 記得帶上它 $permission = new Permission(); 在將表單數據進行賦值 $permission->name = $model->name; $permission->type = $model->type; //這里將權限添加到auth_item中 $bool = Yii::$app->authManager->add( $permission );

有了權限自然少不了RoleController(用于角色管理)

use yii bacRole; $role = new Role(); $role->name = $model->name; $role->type = $model->type; $bool = $this->authManager->add( $role );

不同的是我們要給角色賦予我們所創建的角色對吧也就是在RoleForm中所添加的$child這個變量

這個時候我們要進行兩步操作

(1) //權限列表 $permissions = Yii::$app->authManager->getPermissions(); $perArr = array(); foreach ($permissions as $key => $value) { $perArr[$value->name] = $value->name; } //添加角色的時候同時賦予權限,所以權限列表就是為了給角色添加權限 (2)
//表單提交落后行權限寫入 foreach ( $child as $val) { //獲得權限 $childObj = Yii::$app->authManager->getPermission($val); //給item_child寫入數據(權限表) Yii::$app->authManager->addChild( $role, $childObj ); }

最后就是給所創建的角色分配給用戶了AssignMentController

//獲得角色對象 $role =Yii::$app->authManager->getRole( $model->item_name ); //assign參數 角色對象, 用戶id $bool = Yii::$app->authManager->assign( $role, $userId );

第6步、檢查用戶是不是有權限操作

創建1個控制器用于controllers下需要判斷權限的控制器都繼承于這個基類

BaseController是我自己寫的,這個你們自己可以命名其他。。。

class BaseController extends Controller
public function init() { parent::init();  //用戶id
$userId = Yii::$app->user->getId(); //權限規則邏輯….. $permission = ‘這個是你權限規則邏輯得出的的結果'; if ( !Yii::$app->authManager->checkAccess( $userId , $permission ) ) { throw new CHttpException(403, '沒有權限訪問'); } }
}


好吧,忙了1天刪除修改都沒有時間寫,寫出來了在進行更新!!!

希望能給大家幫助!!!謝謝大家!!不喜勿噴!!!!

轉載請說明出處:  指尖上的藝術家 http://blog.csdn.net/arthuralston2015/article/details/44969867




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 韩国美女爽快一级毛片黄 | 国产精品国产精品国产专区不卡 | 国产精品爱久久久久久久9999 | h肉在线 | 欧美精品久久久久久久免费观看 | 亚洲欧洲在线观看 | 亚洲性生活 | 黄色网址网站 | 婷婷综合缴情亚洲五月伊 | 国产精品自拍第一页 | 精品视频久久久久 | 性欧美video视频另类 | 黑色丝袜高跟国产在线91 | 亚洲v在线 | 国产欧美一区二区三区免费 | 99久久999久久久综合精品涩 | 亚洲久久色 | 伊人中文网 | 一区二区三区中文 | 性欧美在线 | 亚洲不卡在线视频 | www一级黄色片 | 在线一区二区三区 | 一区二区三区免费观看 | 69av视频| 亚洲资源在线播放 | 亚洲一个色 | 日韩一区国产二区欧美三 | 欧洲乱码专区一区二区三区四区 | 偷拍区自拍区 | 精品一区二区三区在线视频观看 | h视频免费看 | 国产视频中文字幕 | 天天性综合 | 国产精品不卡高清在线观看 | 午夜在线观看视频在线播放版 | 亚洲欧洲在线观看 | 中文字幕一区二区三区乱码 | 色天网站| 91日本在线观看亚洲精品 | 亚洲天天看 |