如何使用API PLATFORM(symfony 4)添加登录到swagger UI?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用API PLATFORM(symfony 4)添加登录到swagger UI?相关的知识,希望对你有一定的参考价值。

我安装并配置了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 = test with POST方法

所以有了curl它工作但不是POSTMAN,为什么?这是我的security.yaml:

security:
encoders:
    AppEntityUser:
        algorithm: argon2i

providers:
    app_user_provider:
        entity:
            class: AppEntityUser
            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

我不知道如何做到这一点,试图在LoginCheck控制器中添加@ApiRessource(),但它什么也没做。

需要一些帮助/提示,​​谢谢你提前

答案

404消息告诉你没有定义/api/login_check的路由或者它有配置问题并且找不到路由你应该首先使用check and debug your routes并查看是否已定义

login_check:
path: /login_check

您可能还想查看此GitHub Issue

后来编辑:经过多一点研究后,我发现了一个可能解决问题的方法here on Stackoverflow

另一答案

只需将防火墙登录放在首位,在dev上方的示例中。

以上是关于如何使用API PLATFORM(symfony 4)添加登录到swagger UI?的主要内容,如果未能解决你的问题,请参考以下文章

isGranted 为登录的用户 JWT 返回 false - Symfony API-Platform AWS-EB

如何在 Api-Platform 中为虚拟属性引入过滤功能?

symfony + api 平台 - 为路由创建别名

在platform.sh为Symfony 3项目配置smtp

Symfony 4 API 平台和 JWT:如何使用 Symfony 客户端项目登录 API?

如何使用 api-platform 构建 GraphQL API?