Yii2 AccessControl предоставляет Forbidden 403 при использовании HTTPBearerAuth в Rest API

Я аутентифицируюсь на своем базовом контроллере, используя HTTPBearerAuth

public function behaviors()
{
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBearerAuth::className(),
],
];

return $behaviors;
}

На моем UserController расширение базового контроллера и использование AccessControl разрешить гостевым пользователям доступ к логину.

public function behaviors()
{
$behaviors = parent::behaviors();

$behaviors['access'] = [
'class' => AccessControl::className(),
'only' => ['login', 'logout', 'signup'],
'rules' => [
[
'actions' => ['login'],
'allow' => true,
'roles' => ['?'],
],
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
];

$behaviors['verbs'] = [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
];

return $behaviors;
}

Когда я пытаюсь получить доступ к логину без аутентификации, я получаю

{
"name": "Unauthorized",
"message": "You are requesting with an invalid credential.",
"code": 0,
"status": 401,
"type": "yii\web\UnauthorizedHttpException"}

Несанкционированный 401. С деталями аутентификации я получаю

{
"name": "Forbidden",
"message": "You are not allowed to perform this action.",
"code": 0,
"status": 403,
"type": "yii\web\ForbiddenHttpException"}

Почему я это получаю?

3

Решение

Вы можете удалить AccessControl и использовать HTTPBearerAuth в поведении детей, используя only или же except,

public function behaviors()
{
$behaviors = parent::behaviors();
//authentication only applies to actionIndex in child controller
$behaviors['authenticator']['only'][] = 'index';

return $behaviors;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]