У меня есть сервер Apache и почтальон, чтобы проверить, работает ли api url, и у меня странное поведение, то есть, когда я звоню с правильными учетными данными http://localhost/xxx/web/app_dev.php/api/login_check
на почтальоне LexikJwtBundle возвращает токен, так что все у меня работает нормально.
Но, делая это в Mozilla или Chrome, я получаю 401 Bad Credentials
, мой security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
login:
pattern: ^/api/login
stateless: true
anonymous: true
provider: fos_userbundle
form_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
api:
pattern: ^/api
stateless: true
lexik_jwt: ~
main:
pattern: ^/
form_login:
provider: fos_userbundle
# csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
запрос в Mozilla:
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin: http://sprawy.com
Connection: keep-alive
что может быть не так?
Angular не отправил соответствующий заголовок. Добавление headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
при создании почтового звонка решена проблема.
Ваш конфиг Symfony выглядит нормально.
установите этот заголовок с вашим запросом аутентификации:
'Accept': 'application/json',
'Content-Type': 'application/json'