2012-07-08 93 views
3

我已閱讀Yii關於「基於角色的訪問控制」的文檔,但我沒有找到配置默認用戶角色的位置。Yii框架:如何設置默認用戶角色

我已經添加:

'authManager'=>array(
     'class'=>'CDbAuthManager', 
     'connectionID'=>'db', 
     'defaultRoles'=>array('guest', 'authenticated', 'admin'), 
), 

到保護/配置/ main.php

但在那裏我把這些業務規則?

$bizRule='return !Yii::app()->user->isGuest;'; 
$auth->createRole('authenticated', 'authenticated user', $bizRule); 

$bizRule='return Yii::app()->user->isGuest;'; 
$auth->createRole('guest', 'guest user', $bizRule); 

$bizRule='return Yii::app()->user->admin;'; 
$auth->createRole('admin', 'admin user', $bizRule); 

感謝您的幫助!

+0

在同一個地方你創建了你的角色,任務等/你有'$ auth = Yii :: app() - > authManager;' – 2012-07-08 11:38:02

+0

那麼問題就是這樣...直到現在我只用了' accessRules'方法來管理授權,現在我想知道在哪裏放置更復雜的規則並使用authManager ... – Ingro 2012-07-08 11:47:59

+0

以及你可以將它放在任何有意義的地方,也許可以創建一個新的腳本(文件)它叫RbacInit什麼的,用yiic shell來運行,或者只是在yiic shell裏做這一切, – 2012-07-08 12:02:52

回答

1

通過你開始的代碼做到這一點將是一個痛苦。請使用爲此作業創建的Rights擴展。

Rights擴展利用Yii的內置數據庫授權管理器(CDbAuthManager)爲高級訪問控制提供Web界面。

+0

權限是非常有用和易於使用的,但是很多時候需要權限的特性都沒有記錄..我在這裏試了一下.. http://octathorpeweb.com/blog/2012/03/06/yii-rights-extension-rbac-role-based-access-control/ – 2012-07-08 17:05:47

+0

感謝您的建議,權利似乎非常好,乾淨,但我不想在我的項目中使用太多的擴展。另外,由於我需要非常基本的RBAC操作,我寧願自己編寫代碼,以便對我的項目有更多的控制:) – Ingro 2012-07-08 19:29:18

+0

由於太多的擴展,你是否也指太多的資源?那麼Yii只加載那些需要滿足當前請求的文件,並且在你設置你的系統後,只有RController和RFilter類纔會被使用。你的系統不會很慢。至少你應該嘗試一下,看看它做得如何。您可能最終編程80小時以完成此設置並完成所有類型的限制。 – Pentium10 2012-07-08 21:12:40