2017-08-28 5 views
0

Je travaille sur un projet qui a une API construite avec symfony2 comme application backend et frontale dans Angular2. Une fois connecté et obtenir jeton lorsque je tente de demande sont envoyés avec en-tête jeton à mon backend cette question happendNelmio Cors, Api comment définir pour les requêtes angular2 avec des en-têtes de jeton

Un jeton n'a pas été trouvé dans le TokenStorage

ci-dessous capture d'écran d'erreurs

internal server error

header response

BACKEND RÉGLAGE

#nelmioCorsBundle configuration IN CONFIG.YML 
nelmio_cors: 
defaults: 
    allow_credentials: true 
    allow_origin: '*' 
    allow_headers: ['accept', 'content-type', 'authorization', 'x-http-method-override'] 
    allow_methods: ['POST', 'PUT', 'PATCH', 'GET', 'DELETE'] 
    max_age: 3600 


paths: 

    '^/': 
     allow_origin: ['http://localhost:4201'] 
     allow_headers: ['Authorization', 'X-Requested-With', 'Content-Type', 'Accept', 'Origin', 'X-Custom-Auth'] 
     allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS'] 
     max_age: 3600 
     hosts: [] 
     origin_regex: false 
     hosts: ['^\.'] 

BACKEND RÉGLAGE security.yml

firewalls: 
     login: 
      pattern: ^/api/login 
      form_login: 
      provider: fos_userbundle 
      login_path: /api/login 
      check_path: /api/login_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 
     logout:  true 
     anonymous: true 

    api: 
     pattern: ^/api 
     anonymous: false 
     provider: fos_userbundle 
     lexik_jwt: #par defaut check token in Authorization Header prefixer par Bearer 
      authorization_header: # check token in Authorization Header 
        enabled: true 
        prefix: Bearer 
        name: Authorization 
      cookie:    # check token in a cookie 
        enabled: false 
        name: BEARER 
      query_parameter:  # check token in query string parameter 
        enabled: true 
        name: bearer 
      throw_exceptions:  true  # When an authentication failure occurs, return a 401 response immediately 
      create_entry_point:  false  # When no authentication details are provided, create a default entry point that returns a 401 response 
      authentication_provider: lexik_jwt_authentication.security.authentication.provider 
      authentication_listener: lexik_jwt_authentication.security.authentication.listener 

Répondre

0

Dans votre client angulaire lorsque vous vous connectez, vous devez obtenir une sorte de jeton d'accès. Par conséquent vos en-têtes doivent contenir quelque chose comme:

Authorization: Bearer <Token>

+0

getListcommandes (idcommande: nombre): Observable { const url = '$ {} this.postUrlCommandes/$ {}' idcommande; let headers = new En-têtes ({'Autorisation': 'Porteur' + mytoken}); headers.append ('Content-Type', 'application/json'); let options = new RequestOptions ({en-têtes: en-têtes}); renvoyer this.http.get (url, en-têtes) .map ((réponse: Réponse) => { var résultat = réponse.json(); renvoyer le résultat; }); } –

+0

J'ai déjà défini l'en-tête Porteur dans la fonction côté angulaire –

+0

Bizarre, vous définissez des en-têtes mais ils n'apparaissent pas dans les en-têtes de la requête (à partir de la photo que vous avez téléchargée). – Nick