У меня есть проект 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.
В чем проблема, пожалуйста?