在模块Yii框架中创建AccessRules

在模块Yii框架中创建AccessRules,yii,Yii,在模块\administrator\components\AdminController中: class AdminController extends CController { public function filters() { return array('accessControl'); } public function accessRules() { return array( arr

在模块\administrator\components\AdminController中:

class AdminController extends CController
{
    public function filters()
    {
        return array('accessControl');
    }

    public function accessRules()
    {
        return array(
            array('deny', 'users' => array('*')),
        );
    }
}
class SiteController extends AdminController
{
    public function actionIndex()
    {
        $this->render('index');
    }

        public function actionLogin()
        {
                $this->render('login');
        }
}
在模块\管理员\控制器\站点控制器中:

class AdminController extends CController
{
    public function filters()
    {
        return array('accessControl');
    }

    public function accessRules()
    {
        return array(
            array('deny', 'users' => array('*')),
        );
    }
}
class SiteController extends AdminController
{
    public function actionIndex()
    {
        $this->render('index');
    }

        public function actionLogin()
        {
                $this->render('login');
        }
}
但是当访问mydomain.site/administrator/site/index时,它不会重定向到mydomain.site/administrator/site/login,这会重定向到mydomain.site/site/login(默认登录),我希望它重定向到mydomain.site/administrator/site/login

有人能帮我吗?

试试这个:

array('allow', // allow authenticated user to perform below actions
      'actions'=>array('index'),
      'users'=>array('@'),
), 
array('deny',  // deny all users
      'users'=>array('*'),
),
这样,当为
站点/索引
请求url时,由于我们已将
索引
设置为仅允许经过身份验证的用户使用,请求将重定向到
站点/登录
(或默认登录)

我希望它能有所帮助。

在调用筛选器之前设置:

class AdminModule extends CWebModule
{
 public function init()
  {
   $this->setImport(array(
    'admin.models.*',
   //'application.models.*',
    'admin.components.*',
  ));
 }

 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->checkAccess('admin') ) {
 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 {
  throw new CHttpException(403,'Have no permission');
 }
 }
 return true;
 }
 else
 return false;
 }
}

请检查下面的答案。只有在提到
操作
仅允许经过身份验证的用户使用时,才会重定向到
登录
。它正在工作,但当管理员登录成功时,它会重定向管理员主页,这是一个错误:您无权执行此操作。你能帮我吗?检查你的访问规则那里有什么阻塞。它应该有,
array('allow',//允许经过身份验证的用户执行以下操作'actions'=>array('index'),'users'=>array('@'),),array('deny',//deny all users'users'=>array('*'),),