2012-05-12 76 views
1

所有動作我怎麼能回去我定義我的accessrules功能的操作的Yii我想獲得用戶被授權執行

public function accessRules(){ 
    return array(
       'allow', 
       'actions'=>array('create','update' ...), 
        .... 
       ) 
} 

我需要他們dislay原因類似,如果(in_array(」創建',$動作))回聲CHtml ::鏈接('鏈接創建表單') 或可能是像if(user-> isAutorizedToPerfoem('創建'))。

thanx提前

回答

3

我認爲這是不可能的,當你使用accessControl過濾器。在這種情況下,授權數據直接保存在控制器中,所以您在技術上必須位於控制器中以查看accessRules()。就我所知,您無法手動檢查訪問權限。過濾器在那裏工作。您可以通過調用$ this-> accessRules來查看您的acces規則,但是您必須位於控制器中。

您可能必須使用RBAC並在外部保存您的訪問規則。請閱讀此處以獲取更多信息:Yii Documentation - role based access control

還有一個稱爲Rights的相當能幹的Yii擴展,它爲RBAC提供了一個後端。

目前看起來似乎有些過火,但RBAC在靈活性方面無與倫比。如果你使用它,你可以檢查訪問像Yii::app->user->checkAccess('post.create'),和許多其他的東西。

+0

有沒有辦法讓角色以某種方式訪問​​每個動作? – Rohan