在yii2中使用访问控制

在yii2中使用访问控制,yii2,Yii2,我使用访问控制只允许经过身份验证的用户访问 public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['display'], 'rules' => [

我使用访问控制只允许经过身份验证的用户访问

public function behaviors()
        {
            return [
                'access' => [
                'class' => AccessControl::className(),
                'only' => ['display'],
                'rules' => [
                    // allow authenticated users
                    [
                        'allow' => true,
                        'roles' => ['@'],
                        'matchCallback' => function ($rule, $action) {

                         return $this->redirect(Yii::$app->request->baseUrl.'/site/login');      
                        }],

                    ],
                ],
            ];
        }

        public function actionDisplay()
        {
                echo "display";
        } 

当我尝试在不登录的情况下访问显示操作时,我被重定向到登录页面。但当我尝试访问显示操作时,即使已登录,它也会重定向到索引页。我做错了什么?

添加
'actions'=>['display'],

如下

'rules' => [
                // allow authenticated users
                [
                    'actions' => [ 'display'],
                    'allow' => true,
                    'roles' => ['@'],
                    'matchCallback' => function ($rule, $action) {

                     return $this->redirect(Yii::$app->request->baseUrl.'/site/login');      
                    }],

                ],

正常情况下,它对我有效

代码没有问题。只需“matchCallback”,它被调用给经过身份验证的用户,并重定向到登录,如果登录,最终重定向到索引。 删除“matchCallback”解决了这个问题

'rules' => [
             [
              'allow' => true,
              'roles' => ['@'],
              ],
           ],

同意,这是正确的答案。要处理此情况,应使用“denyCallback”