Как добавить логин в пользовательский интерфейс Swagger с помощью API PLATFORM (symfony 4)? - PullRequest
0 голосов
/ 26 января 2019

Я установил и настроил LexikJWTAuthenticationBundle, он работает нормально, но у меня небольшая проблема.

Я включил кнопку авторизации для установки токена JWT, проблема в том, что единственный способ получить токен - использовать следующие команды:

curl -X POST -H "Content-Type: application/json" http://localhost:8000/api/login_check -d '{"username":"johndoe","password":"test"}'

Он отправил мой токен, и я положил его в API, хорошо.

Первая проблема: Когда я пытаюсь выполнить этот запрос с помощью POSTMAN, я получаю сообщение об ошибке:

Невозможно найти контроллер для пути "/ api / login_check". Маршрут неправильно настроен. (404 не найдено)

Запрос: localhost: 8000 / api / login_check? Username = johndoe & password = тестирование методом POST

Так что с curl это работает, но не с POSTMAN, почему? Вот мой security.yaml:

security:
encoders:
    App\Entity\User:
        algorithm: argon2i

providers:
    app_user_provider:
        entity:
            class: App\Entity\User
            property: email

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern:  ^/api/login
        stateless: true
        anonymous: true
        json_login:
            check_path:               /api/login_check
            success_handler:          lexik_jwt_authentication.handler.authentication_success
            failure_handler:          lexik_jwt_authentication.handler.authentication_failure
            require_previous_session: false

    register:
        pattern:  ^/api/register
        stateless: true
        anonymous: true

    api:
        pattern:  ^/api
        stateless: true
        anonymous: true
        provider: app_user_provider

    main:
        anonymous: true

access_control:
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY }

role_hierarchy:
    ROLE_DELEGATION:        [ROLE_USER]
    ROLE_EXPORT:            [ROLE_USER]
    ROLE_USER_ADMIN:        [ROLE_USER]
    ROLE_LIST_ADMIN:        [ROLE_USER]
    ROLE_IMPORT:            [ROLE_USER]
    ROLE_MOBILE:            [ROLE_USER]
    ROLE_ADMIN:             [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
    ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

Вторая проблема, я хотел бы добавить логин внутри Swagger. Как это: Login from swagger

Понятия не имею, как это сделать, попытался добавить @ApiRessource () внутри LoginCheckController, но ничего не происходит.

Нужна помощь / советы, заранее спасибо

Ответы [ 2 ]

0 голосов
/ 27 января 2019

В сообщении 404 сообщается, что либо маршрут, не определяющий /api/login_check, либо отсутствует, либо имеется проблема с настройкой, и маршрут не найден Сначала вам нужно проверить и отладить ваши маршруты и посмотреть, определено ли это уже

login_check:
path: /login_check

Вы также можете проверить это GitHub Issue

Позже Править: Изучив немного больше, я нашел возможное решение вашей проблемы здесь, на Stackoverflow

0 голосов
/ 26 января 2019

Просто поместите ваш логин брандмауэра на первое место, в вашем примере выше dev.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...