Leo
Leo

Reputation: 912

Disable built-in authenticator error for unauthorized users Yii2

I have a controller with many actions. Now I want to use token-based authentication so I changed the behavior like this:

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

This code works well but there is one problem. I want to handle the unauthorized users by myself (not Yii) but when there is an unauthorized user send a request to my action, my action doesn't work and it will return Yii's default error.

How can I tell Yii to just authenticate the user (because I want to use Yii::$app->user->isGuest) and don't send default error?

UPDATE: I just want to disable the authenticator errors, I need other errors.

Yii2

PHP 7.2

Upvotes: 0

Views: 393

Answers (1)

rob006
rob006

Reputation: 22174

You may use $optional property to configure actions where authentication should be optional (should not throw error). If it should be optional for all actions, you may use * instead of action name:

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

Upvotes: 1

Related Questions