Отключить встроенную ошибку аутентификатора для неавторизованных пользователей Yii2 - PullRequest
0 голосов
/ 24 июня 2018

У меня есть контроллер со многими действиями.Теперь я хочу использовать аутентификацию на основе токенов, поэтому я изменил поведение следующим образом:

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

Этот код работает хорошо, но есть одна проблема.Я хочу обрабатывать неавторизованных пользователей самостоятельно (не Yii), но когда есть неавторизованный пользователь, отправивший запрос на мое действие, мое действие не работает, и оно возвращает ошибку Yii по умолчанию.

Как я могусказать Yii просто аутентифицировать пользователя (потому что я хочу использовать Yii::$app->user->isGuest) и не отправлять ошибку по умолчанию?

ОБНОВЛЕНИЕ: я просто хочу отключить ошибки аутентификатора, мне нужны другие ошибки.

Yii2

PHP 7.2

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете использовать свойство $optional для настройки действий, в которых аутентификация должна быть необязательной (не выдает ошибку). Если это не является обязательным для всех действий, вы можете использовать * вместо имени действия:

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