Неверное сообщение JSON при использовании LexikJWTAuthenticationBundle - PullRequest
0 голосов
/ 02 марта 2019

У меня есть проект Symfony 4, где мне нужно выполнить безопасную аутентификацию с помощью LexikJWTAuthenticationBundle.

Я реализовал пакет, следуя его документации, и получаю эту ошибку, когда выполняю следующую команду: curl -X POST -H "Content-Type: application/json" http://localhost:8000/api/login_check -d '{"username":"johndoe","password":"test"}'

Сообщение об ошибке:

Недопустимый JSON

Эта ошибка относится к типу Bad Request (400) и имеет место во время использования json_decode в файле:

Symfony \ Component \ Security \ Http \ Firewall\ UsernamePasswordJsonAuthenticationListener

security.yaml:

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

encoders:
    App\Entity\User: bcrypt

role_hierarchy:
    ROLE_VIP:  ROLE_USER
    ROLE_ADMIN:       [ROLE_USER, ROLE_VIP ]
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_VIP, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

firewalls:
    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

    api:
        pattern:   ^/api
        stateless: true
        guard:
            authenticators:
                - lexik_jwt_authentication.jwt_token_authenticator


    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        anonymous: true
        form_login:
            username_parameter: "login_form[email]"
            password_parameter: "login_form[password]"
            login_path: site_accueil
            check_path: site_accueil
            default_target_path: site_espace_vip_index
            remember_me: false
            success_handler: redirect.after.login
        logout:
            path: /deconnexion
            target: /
        guard:
            authenticators:
                - App\Security\LoginFormAuthenticator
access_control:
- { path: ^/connexion-vip, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/interface, roles: [ROLE_ADMIN] }
- { path: ^/profile, roles: [ROLE_VIP, ROLE_ADMIN] }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

rout.yaml:

api_login_check:
    path: /api/login_check

lexik_jwt_authentication.yaml:

lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
token_ttl: 3600

Сгенерированы ключи SSH.

В чем проблема, пожалуйста?

1 Ответ

0 голосов
/ 04 марта 2019

Проблема решена: curl -X POST -H "Content-Type: application/json" http://localhost:8000/api/login_check -d "{\"username\":\"johndoe\",\"password\":\"test\"}"

...