首页 > 解决方案 > 如何使用 API PLATFORM(symfony 4)将登录添加到招摇 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:
    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 中添加登录。像这样: 大摇大摆的登录

我不知道该怎么做,尝试在 LoginCheckController 中添加 @ApiRessource() 但它什么也没做。

需要一些帮助/提示,​​在此先感谢

标签: symfonyswaggersymfony4api-platform.comlexikjwtauthbundle

解决方案


404 消息告诉您没有定义路由/api/login_check或存在配置问题并且找不到路由您应该首先检查并调试您的路由,看看是否已经定义

login_check:
path: /login_check

您可能还想查看这个GitHub 问题

稍后编辑:在研究了更多之后,我在 Stackoverflow 上找到了解决您问题的可能方法


推荐阅读