yii2 我只想允许索引操作 任何人都可以解决并解释规则返回

问题描述

我试图通过使用这个行为()函数只允许索引操作 现在它也被拒绝索引

任何人都可以解决解释规则返回。

<?PHP

namespace api\modules\v1\controllers;

use yii\rest\ActiveController;
use yii\filters\AccessControl;

/**
 * Doctor Controller API
 */
class DoctorController extends ActiveController
{
    public $modelClass = 'api\modules\v1\models\Doctor';

    public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::className(),'only' => ['index'],'rules' => [
                    [
                        'allow' => false,'verbs' => ['POST']
                    ],[
                        'allow' => true,'actions' => ['index'],'verbs' => ['GET'],'roles' => ['?'],],// everything else is denied
                ],];
    }
}

解决方法

我是看了文档才明白

通过覆盖原始访问行为,它将决定任何未提及的内容都是允许的。

因此,您只需要一个规则来允许一个动作而不使用动词或角色,但如果您想进一步限制它,您可能会这样做。

<?php

namespace api\modules\v1\controllers;

use Yii;
use api\modules\v1\models\Doctor;
use yii\rest\ActiveController;

/**
 * Doctor Controller API
 */
class DoctorController extends ActiveController
{
    public $modelClass = 'api\modules\v1\models\Doctor';

    public function behaviors()
    {

        $behaviors = parent::behaviors();

        $behaviors['access'] = [
            'class' => \yii\filters\AccessControl::className(),'rules' => [
                [
                    // All actions
                    'allow' => true,'actions' => ['index'],],];

        return $behaviors;
    }

}