Yii2:对同一控制器中的特定操作应用不同的AccessRule筛选器

Yii2:对同一控制器中的特定操作应用不同的AccessRule筛选器,yii2,Yii2,是否可以在行为()中使用两个不同的规则集\yii\filters\AccessRule来控制不同的操作?比如: public function behaviors() { return [ // Standard access 'access' => [ 'class' => AccessControl::className(), 'rules' => [

是否可以在
行为()
中使用两个不同的规则集
\yii\filters\AccessRule
来控制不同的操作?比如:

public function behaviors()
{
    return [

        // Standard access
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['create'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],

        // fancy access
        'accessView' => [
            'class' => AccessControl::className(),
            'ruleConfig' => [
                'class' => MyFancyAccessRule::className(),
            ],
            'rules' => [
                [
                    'actions' => ['view'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
    ];
}

在这种情况下,我希望对
视图
操作应用不同的访问规则,因为它有一个额外的检查…

是的,您可以像示例中那样多次附加相同的行为(
访问控制
是控制对指定操作的访问的行为)

但是你不需要。您只能使用一种
AccessControl
行为,并直接在
rules
config:

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['create'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
                [
                    'class' => MyFancyAccessRule::className(),
                    'actions' => ['view'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
    ];
}