ArtemSV
@ArtemSV
Пытаюсь выучить php/mysql/Yii2

Как отключить авторизацию для определенных экшенов (Yii2, rest api)?

Пишу апи на yii2 для уже существующего сайта и столкнулся с такой проблемой.
Нужно сделать некоторые экшены общедоступными (т.е. для получения информации не нужно проходить авторизацию).

Апи писал исходя из этих данных yiiframework.com

но не нашел где там отключается авторизация.
Может кто сталкивался с такой проблемой? подскажите пожалуйста!
  • Вопрос задан
  • 1633 просмотра
Решения вопроса 1
ArtemSV
@ArtemSV Автор вопроса
Пытаюсь выучить php/mysql/Yii2
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'optional' => ['index']
];
return $behaviors;
}
нашел настройку, optional - передается массив экшенов, которые будут публичными
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
В вашем контроллере, где нужно сделать экшен общедоступным.
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['someActionOne', 'someActionTwo',],
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['someActionOne', 'someActionTwo'],
                        'roles' => ['?'],
                    ],
                ],
            ],
        ];
    }


Знак вопроса в rules, указывает на то, что доступ к экшену имеет любой не авторизированный пользователь. Символ @ - указывает на то, что доступно будет только авторизированным. Если у вас в поведение нету ACF, то они будут доступны сами по себе. Все выше сказанное актуально, если у вас не реализована система ролей RBAC, в противном случае, вместо символов придется указывать роль.

ACF - это фильтр, он работает как с простым приложением так и с REST api. Если я не ошибаюсь )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы