Yii框架授权——accessRules用法(2)

访问规则中:
expression: 设定一个PHP表达式。它的值用来表明这条规则是否适用。在表达式,你可以使用一个叫$user的变量,它代表的是Yii::app()->user
expression的具体用法:
class AdminController extends CController
{
 

……
    public function accessRules()
    {
        return array(
        array('allow',  //允许所有人执行'login','error','index'
                'actions'=>array('login','error','index'),
                'users'=>array('*'),
        ),
        array('allow', //允许超级管理员执行所有动作
                'actions'=>array('create','update','delete'),
                'expression'=>array($this,'isSuperAdmin'),
        ),
        array('allow',//允许普通管理员执行
                'actions'=>array('update'),
                'expression'=>array($this,'isNormalAdmin'),    //表示调用$this(即AdminController)中的isNormalAdmin方法。
        ),      
        array('deny',  // deny all users
                'users'=>array('*'),
        ),
        );
    }
    protected function isSuperAdmin($user)//判断是否是超级管理员
    {
        return ($this->loadModel($user->id)->adminAdminFlag==1);
    }
    protected function isNormalAdmin($user)//判断是否是普通管理员
    {
        return ($this->loadModel($user->id)->adminAdminFlag==0);
    }

    public function loadModel($id)
    {
        $model=Admin::model()->findByPk((int)$id);
        if($model===null){
            throw new CHttpException(404,'页面不存在');     
        }
        return $model;
    }
}

注:其中$user代表Yii::app()->user即登录用户。
posted @ 2012-02-20 22:23  mr.coke  阅读(1639)  评论(0)    收藏  举报