Проверка подлинности Symfony lexik jwt с использованием пользовательской ошибки поставщика: «Вызов функции-члена getUsername () при нулевом значении» - PullRequest
0 голосов
/ 16 октября 2018

Я объединил Проверка подлинности Lexik jwt с пользовательским провайдером и запустил Руководство по использованию LexikJWT Sandbox .

Все отлично работает, за исключением последнего шага в руководстве.

$ curl -H "256tokencharacters" http://localhost:8000/api приводит к следующей ошибке:

{
    "code": 500,
    "message": "Call to a member function getUsername() on null"
}

Эта getUsername() функция взята из предложенной функции Lexik api () в моем DefaultController .

Это из-за того, что $ this-> getUser () возвращает ноль, а $this->container->get('security.token_storage') возвращает ноль.

Так что по какой-то причине это 'security.token_storage'остается пустымЯ не уверен, что это значит.

security.yaml

security:
  encoders:
    App\Security\User\WebserviceUser: plaintext

  role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

  providers:
    webservice:
      id: App\Security\User\WebserviceUserProvider
    jwt:
      lexik_jwt:
        class: App\Security\User\WebserviceUser

  firewalls:
    dev:
      pattern: ^/(_(profiler|wdt)|css|images|js)/
      security: false

    login:
      pattern:  ^/api/login
      stateless: true
      anonymous: true
      provider: webservice
      json_login:
        check_path: /api/login_check
        success_handler: lexik_jwt_authentication.handler.authentication_success
        failure_handler: lexik_jwt_authentication.handler.authentication_failure

    client_list:
      pattern:  ^/api/client/active
      stateless: true
      anonymous: true

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

  access_control:
    - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api/client/active, roles: IS_AUTHENTICATED_ANONYMOUSLY }
...