Ошибка 401 При отправке неверных учетных данных с помощью JWT?

Итак, я работаю с JWT, когда я вставляю действительные данные (имя пользователя и пароль), я получаю ответ со статусом 200, но я вставляю неправильные данные, я получаю сообщение об ошибке 401 с сообщением о плохих учетных данных, что явно не очень хорошо, потому что я всегда получаю красную красивую ошибку в консоли браузера.

Я работаю с платформой Symfony 4 api, и вот файлы, необходимые для выполнения такой задачи,

security.yaml:

security:
  # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
  encoders:
    App\Entity\User:
      algorithm: bcrypt
  providers:
    #in_memory: { memory: ~ }
    database:
      entity:
        class: App\Entity\User
        property: username
  firewalls:
    dev:
      pattern: ^/(_(profiler|wdt)|css|images|js)/
      security: false
    api:
      pattern: ^/api
      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
      guard:
        authenticators:
          - lexik_jwt_authentication.jwt_token_authenticator

      # activate different ways to authenticate
      # https://symfony.com/doc/current/security.html#firewalls-authentication
      # https://symfony.com/doc/current/security/impersonating_user.html
      # switch_user: true

  # Easy way to control access for large sections of your site
  # Note: Only the *first* access control that matches will be used
  access_control:
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    # - { path: ^/admin, roles: ROLE_ADMIN }
    # - { path: ^/profile, roles: ROLE_USER }

И сущность User:

<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ApiResource(attributes={
 *     "force_eager"=false,
 *     "normalization_context"={"groups"={"read"}, "enable_max_depth"=true},
 *     },)
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User implements UserInterface {

    /* 

    Just Variables and getters and setters here 

    */

    public function getRoles(){
        return ['ROLE_USER'];
    }

    public function getSalt(){

    }


    public function eraseCredentials(){

    }


}
?>

Поэтому я не знаю, что вызывает проблему, и любая помощь будет очень признательна.


person TaouBen    schedule 21.08.2019    source источник
comment
Какое поведение вы ожидаете увидеть?   -  person Ihor Kostrov    schedule 22.08.2019
comment
Это нормально? получение ошибки 401 в консоли? Я не знаю. На самом деле, я ждал ответа 200 с сообщением «Не в порядке, например, потому что при правильной аутентификации я получаю сообщение« ОК »? М я не прав?   -  person TaouBen    schedule 22.08.2019


Ответы (1)


В этом случае ошибки - это нормально. В REST вы используете коды состояния, чтобы сообщить клиентскому приложению, что что-то пошло не так. Пример ответа «200 с сообщением« Не в порядке »» - плохая идея, потому что код состояния 200 означает «Все в порядке», но в сообщении вы указываете, что произошло с ошибкой. Часто для этой цели используются коды состояния 4 **, например 400 - Неверный запрос или 422 - вы отправляете неверные данные в бэкэнд /

person Ihor Kostrov    schedule 22.08.2019
comment
Хорошо, спасибо за разъяснения. - person TaouBen; 22.08.2019