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

来源:互联网 发布:java web如何编译 编辑:程序博客网 时间:2024/05/29 06:35

访问规则中:
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即登录用户。
转载link http://www.cnblogs.com/mrcoke/articles/2360601.html