Ошибка безопасности Phalcon Zircote / Swagger-php

Я пытаюсь использовать Swagger-php для создания документации по API в приложении, над которым я работаю. Я хочу защитить его с помощью JWT, поэтому поместил SecurityScheme в мою ControllerBase:

/** 
 * @SWG\SecurityScheme(
 *     securityDefinition = "Bearer",
 *     bearerFormat = "JWT",
 *     type = "apiKey",
 *     name = "Authorization",
 *     in = "header"
 * )
 */

А потом в своем контроллере я хотел использовать его

/**
 * @SWG\Get(
 *      path = "/test",
 *      @SWG\Response(
 *          response = "200",
 *          description = "Returns test data"
 *      ),
 *     security = {{"Bearer":{}}}
 * )
 */ 

Он правильно загружается в моем пользовательском интерфейсе Swagger, но когда я пытаюсь выполнить запрос, я получаю в ответ ошибку:

Syntax error, unexpected token }, near to '}}

Похоже, что правильные аннотации для Swagger неверны для PHP Interpreter. Я могу изменить это на

security = {{"Bearer":{''}}}

Затем запрос работает, но когда я перезагружаю пользовательский интерфейс Swagger, запрос там не отображается.

Кто-нибудь может мне помочь?

ОБНОВЛЕНИЕ: я ошибался, думая, что это проблема PHP Interpreter. Проблема возникает при использовании аннотаций Phalcon. Вот вся ошибка, возвращаемая сервером.

Syntax error, unexpected token }, near to '}} ) ' in /var/www/api/api/app/modules/user/controllers/UserController.php on line 21

0 [internal function]:
Phalcon\Annotations\Reader->parse('Api\Modules\Use...')
1 [internal function]: Phalcon\Annotations\Adapter->get('Api\Modules\Use...')
2 /var/www/api/api/app/library/ApiManager/ApiAnnotation.php(54): Phalcon\Annotations\Adapter->getMethod('Api\Modules\Use...',
'getAllUsersActi...')
3 /var/www/api/api/app/library/ApiManager/ApiAnnotation.php(41): Api\Library\ApiManager\ApiAnnotation->getFromActiveAction()
4 /var/www/api/api/app/library/AuthGuard/AuthGuard.php(23): Api\Library\ApiManager\ApiAnnotation->__construct()
5 /var/www/api/api/app/controllers/ControllerBase.php(37): Api\Library\AuthGuard\AuthGuard->__construct()
6 [internal function]: Api\Controllers\ControllerBase->initialize()
7 [internal function]: Phalcon\Dispatcher->dispatch()
8 /var/www/api/api/public/index.php(54): Phalcon\Mvc\Application->handle()
9 {main}

Вам необходимо удалить bearerFormat = "JWT",, он используется только в OpenAPI 3.0, но не в 2.0.

Helen 25.05.2018 17:48

"В ответ я получил ошибку: синтаксическая ошибка, непредвиденный токен}, рядом с '}}" - эта ошибка возвращается вашим сервером?

Helen 25.05.2018 17:49

@Helen Я обновил вопрос. Да, это все возвращается моим сервером.

Daniel Pieczyński 28.05.2018 22:22

Что находится в строке 21 в UserController.php?

Helen 28.05.2018 23:01

@Helen `* security = {{" Bearer ": {}}}` Похоже, это то, с чем Phalcon Annotations не может справиться

Daniel Pieczyński 30.05.2018 09:53
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
5
394
0

Другие вопросы по теме