Как сохранить параметр access_token от входа в систему для запросов следующего сообщения - PullRequest
0 голосов
/ 24 марта 2020

В swagger С версией api 3 у меня есть логин, описанный как:

  /login:
    post:
      tags:
        - user login
      summary: User login

      responses:
        '200':
          description: Successful login
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserLogin'
        '400':
          description: Invalid login

      operationId: postLogin
      requestBody:
        description: Login user fields
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                email:
                  type: string
                  default: admin@site.com
                password:
                  type: string
                  default: 111111
              required:
                - email
                - password

, и если логин успешен, а возвращенные данные, у меня есть поле access_token.

Со схемой, описанной как:

components:
  schemas:


    UserLogin:
      properties:
        access_token:
          type: string
        user:
          $ref: '#/components/schemas/UserLogin'
        token_type:
          type: string
        user_avatar_path:
          type: string
        usersGroups:
          type: array
        expires_in:
          type: integer

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

Как я могу сделать это в чванстве. Кажется, я не могу скопировать пасту значение access_token из запроса на вход в систему для моих запросов на публикацию, а не параметр access_token?

МОДИФИЦИРОВАННЫЙ БЛОК: Я нашел, как скопировать пасту access_token из логина: https://prnt.sc/rs3ck6

/ личный / профиль URL для чтения данных профиля не имеет в параметрах в qiuery, поэтому я определил access_token как:

  securitySchemes:
    ApiKeyAuth:        # arbitrary name for the security scheme
      type: apiKey
      in: header       # I suppose it must be "header"
      name: access_token

Но как добавить access_token в заголовок моего /личный профиль ? Я вижу: https://prnt.sc/rs3i90 и, нажимая на кнопку со знаком блокировки, я вижу модальное диалоговое окно «Доступные полномочия», которое пусто. Я полагаю, мне нужно выбрать access_token?

Спасибо!

1 Ответ

1 голос
/ 03 апреля 2020

Я думаю Аутентификация ключей API . Это сократит время, необходимое для копирования и вставки вашего access_token.

. Предположим, вам нужно передавать access_token через строку запроса на каждый запрос POST, тогда вы можете настроить глобальную аутентификацию в swagger следующим образом:

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: access_token
      in: header
security:
  - ApiKeyAuth: []

или, если вы используете аутентификацию на предъявителя:

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

security:
  - bearerAuth: []

После получения вызова access_token из /login, вы можете нажать Авторизовать кнопку под информацией API, и установите его там. Тогда все последующие вызовы, сделанные через интерфейс Swagger, должны автоматически иметь access_token в строке запроса, например:

https://petstore.swagger.io/v2/login?access_token=1234
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...