Я пытаюсь интегрировать пользовательский интерфейс swagger в приложение angular7. Я использую swagger-ui 3.37 из npm. API использует swagger 2.0 для документов. for Он отлично работает без включенной авторизации в API. После включения авторизации на стороне API я хотел бы добавить токен авторизации через код, чтобы пользователям не приходилось вводить ключ авторизации вручную для каждой конечной точки.
Я добавил приведенный ниже код в файл компонента. Но это все еще не работает.
onComplete:
function() {
swaggerui.preauthorizeApiKey("Authorization", usertoken);
}
Поле авторизации по-прежнему отображается пустым, которое необходимо каждый раз вводить вручную. Я хотел бы установить ключ авторизации через код, который можно применить ко всем конечным точкам, а также хотел бы скрыть кнопку «Авторизовать».
Некоторая помощь была бы здоровой.
Обновлено: Определение безопасности:
"securityDefinitions": {
"Authorization": {
"type": "apiKey",
"description": "Filling bearer token here",
"name": "Bearer",
"in": "header"
}
}
авторизация пользовательского интерфейса swagger все еще пуста
@Helen, да, я уже ссылался на этот ответ, и в моем коде доступны как 1, так и 2. (Отредактировал мой вопрос). Кнопка «Авторизация» отображается, но поле «Авторизация» в каждой конечной точке по-прежнему пусто, и его необходимо заполнить вручную. Что-то еще отсутствует? Спасибо за ответ.
@Helen Я добавил определение безопасности и снимок экрана.
@ GokuSS3 Вы смогли решить эту проблему? Я столкнулся с той же проблемой.
@ONE_FE: Поздний ответ, но вы все же смогли решить свою проблему? Я смог исправить это, используя хак в принятом ответе ниже.
@ GokuSS3 Насколько я помню, я смог решить эту проблему, используя приведенный ниже ответ, и ответ принят.
@ONE_FE: Спасибо, подумал, что у тебя есть другой способ исправить это. Пожалуйста, проголосуйте, если ответ был полезен для вас.
Мне не удалось выполнить эту работу с помощью конфигурации swagger в API, а также конфигурации, которая передается в конструктор пользовательского интерфейса swagger. Не уверен, почему.
Но я смог заставить его работать, добавив хак на кнопку TryOut. В обработчике onComplete в конструкторе пользовательского интерфейса swagger я добавил событие прослушивателя документов и перехватил событие щелчка Tryout, добавил ключ авторизации в текстовое поле Authorization и поднял событие для его поведения по умолчанию. Это сработало для меня.
Надеюсь, это поможет кому-то, кто застрял, как я. :)
См. этот ответ для получения подробной информации о том, как использовать
preauthorizeApiKey()
. 1) Его нужно вызывать из обработчикаonComplete
в конструкторе пользовательского интерфейса Swagger. 2) В вашем определении API должна быть соответствующая схема безопасности; в вашем примере схема должна называтьсяAuthorization
. Соответствует ли ваш код этим требованиям?