为未经授权的用户禁用内置身份验证器错误 Yii2

Disable built-in authenticator error for unauthorized users Yii2

我有一个控制器,可以执行很多操作。现在我想使用基于令牌的身份验证,所以我改变了这样的行为:

public function behaviors()
{
    return [
        'authenticator' => [
            'class' => CompositeAuth::className(),
            'only' => [
                'logout',
                'revoke'
            ],
            'authMethods' => [
                HttpBasicAuth::className(),
                HttpBearerAuth::className(),
                QueryParamAuth::className(),
            ],
        ]
    ];
}

此代码运行良好,但存在一个问题。 我想自己处理未经授权的用户(不是 Yii)但是当有未经授权的用户向我的操作发送请求时,我的操作不起作用并且它将 return Yii 的默认错误。

如何告诉 Yii 只对用户进行身份验证(因为我想使用 Yii::$app->user->isGuest)而不发送默认错误?

更新:我只想禁用验证器错误,我需要其他错误。

Yii2

PHP 7.2

您可以使用 $optional 属性 配置身份验证可选的操作(不应引发错误)。如果它对所有操作都是可选的,您可以使用 * 而不是操作名称:

public function behaviors()
{
    return [
        'authenticator' => [
            'class' => CompositeAuth::className(),
            'optional' => ['*'],
            // ...
        ]
    ];
}