问题描述
我试图通过使用这个行为()函数只允许索引操作 现在它也被拒绝索引
任何人都可以解决并解释规则返回。
<?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;
}
}