Swagger-php с Swagger-ui не работает с базовой аутентификацией

Я использую swagger-ui и swagger-json, созданные с помощью swagger-php. Я не могу выполнить базовую аутентификацию для использования моей конечной точки. Я могу получить файл swagger json из моего приложения, но не использовать открытую конечную точку. Я не понимаю, что я неправильно понимаю. Если кто-то может показать мне полный пример с базовой аутентификации в Swagger 2.0?
CORS включен и полностью работает. Swagger-ui работает на localhost: 3000 с nodejs, а мое приложение запускает php с nginx на localhost: 80.

Я использую swagger-ui-dist 3.14.1, который совместим с swagger 2.0 (swagger-php 2.0)

3.14.1 | 2018-05-04 | 2.0, 3.0 | tag v3.14.1

Я использую эти комментарии SWG в моих контроллерах, чтобы использовать basicAuth (на стороне сервера)

/**
*  @SWG\SecurityScheme(
*      securityDefinition="basicAuth",
*      name="authorization",
*      type="basic",
*      scheme="http"*  )
*/

и это комментарии

/**
* @SWG\Get(
*     description="Get all catalog",
*     path="/ott/catalogs",
*     produces={"application/json"},
*     security = {"basicAuth"},
*     @SWG\Response(response="200", description="Get all catalogs"),
*     @SWG\Response(response="401",description="You are not authorized")
*     )
* )
*/

Вот мой код на стороне клиента:

 window.onload = function() {
// Build a system
const ui = SwaggerUIBundle({
url: "http://ott/ott/tools/swagger",
host: 'ott',
basePath: 'ott/',
schemes: 'http',
enableCORS: true,
dom_id: '#swagger-ui',
deepLinking: true,
validatorUrl:null,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
requestInterceptor: (req) => {
if (req.loadSpec) {
let hash = btoa("*******" + ":" + "********");
req.headers.Authorization = "Basic " + hash;
}
return req
},
onComplete : () => {
ui.preauthorizeBasic("basicAuth","*******","*******")
}
});
window.ui = ui

Когда я нажимаю на замок, у меня появляется первая ошибка в моей консоли, а затем, когда я пытаюсь получить свои каталоги, я получаю 401 — не авторизовано, потому что заголовок Basic Authentication не отправляется.

захват ду 2018-05-07 16-44-38

0

Решение

Аннотации выглядят неправильно. + Изменить @SWG\SecurityScheme чтобы:

/**
*  @SWG\SecurityScheme(
*      securityDefinition="basicAuth",
*      type="basic"*  )
*/

(без name а также scheme атрибуты), и измените security в @SWG\Get следующее:

/**
* @SWG\Get(
*     ...
*     security = {{"basicAuth": {}}},
*     ...
3

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

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

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