2015-04-21 18 views
5

Próbuję użyć LexikJWTAuthenticationBundle z FOSUserBundle w mojej aplikacji Symfony 2.7.Uwierzytelnianie JWT z Symfony 2.7

Zasadniczo konfiguracja FOSUserBundle działa prawidłowo: poprawnie ładuję swoje urządzenia i jeśli spróbuję zalogować się za pomocą formularza logowania, to się uda.

Również działa token z pola login_check. Następnie umieszczam nagłówek Authorization z nagłówkiem "Bearer" w nagłówku i próbuję uzyskać dostęp do innej strony. Zawsze wynika to z odpowiedzi 401.

Czy ktoś prowadzi o tym, co może być problem lub jak przejść do debugowania?

Oto mój config:

# app/config/config.yml 

# DunglasJsonLdApi 
dunglas_json_ld_api: 
    title:  %api_name% 
    description: %api_description% 
    default: 
     order: DESC 

# FOSUserBundle 
fos_user: 
    db_driver:  orm 
    firewall_name: api 
    user_class: ApiBundle\Bundles\UserBundle\Entity\User 

# LewikJWTAuthentificationBundle 
lexik_jwt_authentication: 
    private_key_path: %kernel.root_dir%/config/jwt/private.pem 
    public_key_path: %kernel.root_dir%/config/jwt/public.pem 
    pass_phrase:  %jwt_pass_phrase% 
    token_ttl:  86400 
# app/config/routing.yml 

# DunglasJsonLdBundle 
api_doc: 
    resource: @DunglasJsonLdApiBundle/Resources/config/routing.xml 
    prefix: /api 

api: 
    resource: . 
    type:  json-ld 
    prefix: /api 

# FOSUserBundle 
fos_user_security_login: 
    path:  /login 
    defaults: { _controller: FOSUserBundle:Security:login } 

fos_user_security_check: 
    path:  /api/login_check 
    defaults: { _controller: FOSUserBundle:Security:check } 

fos_user_security_logout: 
    path:  /logout 
    defaults: { _controller: FOSUserBundle:Security:logout } 
# app/config/security.yml 

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

    role_hierarchy: 
     ROLE_CA:   ROLE_USER 
     ROLE_SUPER_ADMIN: [ ROLE_CA, ROLE_ALLOWED_TO_SWITCH ] 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

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

     login: 
      pattern: ^/login|^/api/login 
      provider: fos_userbundle 
      stateless: true 
      anonymous: true 
      form_login: 
       login_path:    fos_user_security_login 
       check_path:    fos_user_security_check 
       username_parameter:  username 
       password_parameter:  password 
       success_handler:   lexik_jwt_authentication.handler.authentication_success 
       failure_handler:   lexik_jwt_authentication.handler.authentication_failure 
       require_previous_session: false 

     api: 
      pattern: ^/api 
      provider: fos_userbundle 
      stateless: true 
      anonymous: true 
      lexik_jwt: 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/api/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/, role: IS_AUTHENTICATED_FULLY } 

kompletnego wniosku dostępny here.

Odpowiedz

5

Wygląda na to, że teraz działa dobrze. Nie zmieniłem niczego, odkąd opublikowałem moje pytanie i przed opublikowaniem ponownie uruchomiłem komputer, zrestartowałem MySQL, nginx, PHP5-FPM i usunięto pamięć podręczną Symfony, więc naprawdę nie rozumiem, co się stanie ...