为什么accessRules在我的yii模块中不起作用,yii版本是1.1

jdzmm42g  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(138)

我想使经过身份验证的用户可以访问我的

  • admin(模块)/sysMessage(控制器)/index(操作)*

我的访问规则如下:

public function accessRules()
    {
        return array(
            array('allow',  // allow only users in the 'admin' role access to our actions
                'actions'=>array('index','view', 'create', 'update', 'admin', 'delete'),
                'roles'=>array('admin'),
            ),
                array('allow',  
                        'actions'=>array('index','view'),
                        'roles'=>array('@'),
                ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

但是,当经过身份验证的用户试图访问我的
admin(模块)/sysMessage(控制器)/index(操作),他们得到了这个消息:
“错误403您未被授权执行此操作。”
你能告诉我为什么吗?

67up9zun

67up9zun1#

当我们使用模块/控制器/动作时,我们应该检查
/yiiroot/trackstar/protected/modules/admin/yourModule.php
我将“public function beforeControllerAction”修改为如下,这样问题就解决了。
请参阅:Create AccessRules in modules Yii Framework

public function beforeControllerAction($controller, $action)
     {
      if(parent::beforeControllerAction($controller, $action))
     {
      // this method is called before any module controller action is performed
       // you may place customized code here

     if(Yii::app()->user->isGuest){
     $url = Yii::app()->createUrl(Yii::app()->user->loginUrl);
     Yii::app()->user->returnUrl = Yii::app()->createUrl('/admin/');
     Yii::app()->request->redirect($url);
    }
     else {
       return true;
     }

     }
     else
     return false;
     }

相关问题