2012-02-09 27 views
0

Yii對我來說非常新穎。我正在開發一個真實世界的例子。 我有一個表,因此一個模型,稱爲用戶從數據庫中獲取數據。數據庫中的三個主要字段是用戶名,密碼和userRole。 用戶名和密碼工作得很好。 我需要查看數據庫中的userRole並基於此,爲用戶分配一個角色。 例如用戶的userRole字段== 1,用戶是admin,可以創建,讀取,更新和刪除(CRUD)。 但是,如果用戶的userRole == 2,用戶可以更新並創建但不能刪除。 我試圖在UserController.php中使用'expression'ib accessRules()來做到這一點,但它沒有奏效。 然後我讀到它,發現我應該做的角色。 這就是我寫的:如何從Yii的數據庫中獲得用戶許可

public function accessRules() 
    { 
     $auth = Yii::app()->authManager; 

     $auth->createOperation('createUser','create a user'); 
     $auth->createOperation('updateUser','update a user'); 
     $auth->createOperation('deleteUser','delete a user'); 

     $role=$auth->createRole('creator'); 
     $role->addChild('createUser'); 

     $role=$auth->createRole('updater'); 
     $role->addChild('updateUser'); 

     $role=$auth->createRole('deleter'); 
     $role->addChild('deleteUser'); 


     return array(
................................ 
     array('allow', 
      'actions'=>array('create','update'), 
      'users'=>array('@'), 
      'roles'=>????, 

..................... 

???是我不知道該怎麼做的地方。 我是否在正確的位置/文件中定義了createOperation/addChild? 如何在返回數組中使用'角色'? 也應該從哪裏得到數據庫的userRole?

我拼命地尋找答案,因爲Yii的論壇不活躍

謝謝

回答

0

操作和角色的創建是一次性的活動(只要您創建或編輯)。您需要有一個單獨的方法,您將調用一次。

如果你想有一個基於角色的訪問系統,你需要添加額外的表到你的數據庫。模式可以在文件夾 - yii/framework/web/auth/schema.sql中找到。

但要實現RBAC是使用類似權利的延伸最簡單的方法 - (或通過已知的用戶ID)http://www.yiiframework.com/extension/rights/

0

必須分配角色(一個或多個),以登錄用戶

$auth->assign('creator',user()->id); 
$auth->assign('updater', 102); //102 as user id 
//... 

而且在accessor你必須寫

'actions'=>array('create','update'), 
'roles'=>array('creator','updater'), 

這是answeryou正在尋找?