我的项目使用yii 1.13框架,我需要“gii”代码生成器,但我想限制它只为管理员用户,我如何才能实现这一点?

最佳答案

遵循以下步骤:
从system.gii i.e framework/gii复制gii模块
粘贴到project的protected/modules文件夹中。
在gii模块中的gii module.php中进行以下更改。
改变这个

public function beforeControllerAction($controller, $action)
    {

      if(parent::beforeControllerAction($controller, $action))
        {
            $route=$controller->id.'/'.$action->id;
            if(!$this->allowIp(Yii::app()->request->userHostAddress) && $route!=='default/error')
                throw new CHttpException(403,"You are not allowed to access this page.");

           $publicPages=array(
                'default/login',
                'default/error',
            );

           if(Yii::app()->user->isGuest  && !in_array($route,$publicPages))
                   Yii::app()->user->loginRequired();
            // check your admin conditions here
           elseif(!isset(Yii::app()->user->isAdmin) || !Yii::app()->user->isAdmin)
                   throw new CHttpException(403,"You are not allowed to access this page.");
            else
                return true;
          }
        return false;
    }

在config/main.php中
'modules' => array( 'gii'=>array( 'class'=>'application.modules.gii.GiiModule', 'password'=> Your password, 'ipFilters'=>array('127.0.0.1','::1'), ), ),
注:我没有测试过。但它可能会给你一个如何进行的想法。

09-25 16:05