Добавить ключ авторизации через код в пользовательском интерфейсе angular swagger

Я пытаюсь интегрировать пользовательский интерфейс 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 все еще пуста

См. этот ответ для получения подробной информации о том, как использовать preauthorizeApiKey(). 1) Его нужно вызывать из обработчика onComplete в конструкторе пользовательского интерфейса Swagger. 2) В вашем определении API должна быть соответствующая схема безопасности; в вашем примере схема должна называться Authorization. Соответствует ли ваш код этим требованиям?

Helen 10.12.2020 08:24

@Helen, да, я уже ссылался на этот ответ, и в моем коде доступны как 1, так и 2. (Отредактировал мой вопрос). Кнопка «Авторизация» отображается, но поле «Авторизация» в каждой конечной точке по-прежнему пусто, и его необходимо заполнить вручную. Что-то еще отсутствует? Спасибо за ответ.

GokuSS3 10.12.2020 13:07

@Helen Я добавил определение безопасности и снимок экрана.

GokuSS3 10.12.2020 15:25

@ GokuSS3 Вы смогли решить эту проблему? Я столкнулся с той же проблемой.

ONE_FE 16.05.2022 13:30

@ONE_FE: Поздний ответ, но вы все же смогли решить свою проблему? Я смог исправить это, используя хак в принятом ответе ниже.

GokuSS3 17.04.2023 15:20

@ GokuSS3 Насколько я помню, я смог решить эту проблему, используя приведенный ниже ответ, и ответ принят.

ONE_FE 18.04.2023 16:11

@ONE_FE: Спасибо, подумал, что у тебя есть другой способ исправить это. Пожалуйста, проголосуйте, если ответ был полезен для вас.

GokuSS3 19.04.2023 10:47
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
7
642
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне не удалось выполнить эту работу с помощью конфигурации swagger в API, а также конфигурации, которая передается в конструктор пользовательского интерфейса swagger. Не уверен, почему.

Но я смог заставить его работать, добавив хак на кнопку TryOut. В обработчике onComplete в конструкторе пользовательского интерфейса swagger я добавил событие прослушивателя документов и перехватил событие щелчка Tryout, добавил ключ авторизации в текстовое поле Authorization и поднял событие для его поведения по умолчанию. Это сработало для меня.

Надеюсь, это поможет кому-то, кто застрял, как я. :)

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