2015-04-21 15 views
5

Sto provando a utilizzare LexikJWTAuthenticationBundle con FOSUserBundle sull'applicazione Symfony 2.7.Autenticazione JWT con Symfony 2.7

Fondamentalmente, la configurazione di FOSUserBundle funziona correttamente: carico correttamente i miei proiettori e se provo ad accedere tramite il modulo di accesso, questo succede.

Anche il token da login_check funziona. Poi metto l'intestazione Autorizzazione con "Bearer" nell'intestazione e provo ad accedere ad un'altra pagina. Risulta sempre con una risposta 401.

Qualcuno ha dei suggerimenti su quale potrebbe essere il problema o su come procedere per eseguire il debug?

Ecco la mia configurazione:

# 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 } 

applicazione completa disposizione here.

risposta

5

Sembra funzionare ora. Non ho cambiato nulla da quando ho postato la mia domanda e prima di pubblicare ho riavviato la mia macchina, riavviato MySQL, nginx, PHP5-FPM e cancellato la cache di Symfony, quindi non riesco a capire cosa succede ...