日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

我用的是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天刪除修改都沒有時間寫,寫出來了在進行更新?。?!

希望能給大家幫助?。。≈x謝大家!!不喜勿噴!!??!

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




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久久久成人网 | 黄色在线免费视频 | 黄色毛片免费看 | 国产激情一区二区三区在线观看 | 国产精品久久久久久久久免费 | 黄色片av| 久久久www成人免费无遮挡大片 | 亚洲精品视频在线观看免费 | 亚洲国产精品成人va在线观看 | 欧美色图自拍 | 美女被免费喷白浆视频 | 国产在视频一区二区三区吞精 | 国产激情一区二区三区在线观看 | 欧美精品一区二 | 欧美日日 | 少妇av一区二区三区 | 91嫩草精品 | 国产精品视频导航 | 欧美精品在线观看 | 在线看亚洲 | 99精品视频免费版的特色功能 | 国产综合久久 | 日韩av成人在线观看 | 日韩欧美色 | 狠狠狠干| 色成人免费网站 | 精品久久久久一区二区国产 | 九色九一 | 久久精品国产一区二区三区不卡 | 成人影院网站ww555久久精品 | 美女视频一区 | 欧美日韩电影在线 | 成人午夜在线观看 | 久久网站免费观看 | 久久久久国产精品一区 | 久久密| 久久免费视频在线 | 麻豆av免费 | 精品国产乱码一区二区三区 | 亚洲精品在线看 | 久久中文字幕一区二区 |