2017-02-21 33 views
0

更新我的項目后角2最終我有一個問題讓WebApi2 authoriaztion與IdentityServer3和angular2-jwt一起工作。 在angular2-jwt配置中一切正常工作之前,headername爲空,而token-getter-method簡單地返回了令牌。從WebApi中間件身份服務器承載認證使用angular2-jwt

更新空headername後引起了JavaScript的錯誤:

EXCEPTION: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': '' is not a valid HTTP header field name. 

回答

1

所以,我首先得提供headername,在我的根模塊angular2,智威湯遜的配置是這樣的:

 provideAuth({ 
     headerName: 'BearerToken', 
     headerPrefix: '', 
     tokenName: '', 
     tokenGetter:() => { 
      return JSON.parse(localStorage.getItem('bearerToken')); 
     }, 
     globalHeaders: [{'Content-Type': 'application/json'}], 
     noJwtError: true, 
     noTokenScheme: true 
    }) 

仍然無法正常工作。經過一番研究後,我發現標題名稱應該是'Authorization',而tokenName應該是'Bearer'。好吧,讓我們試試這樣:

provideAuth({ 
     headerName: 'Authorization', 
     headerPrefix: '', 
     tokenName: 'Bearer', 
     tokenGetter:() => { 
      return JSON.parse(localStorage.getItem('bearerToken')); 
     }, 
     globalHeaders: [{'Content-Type': 'application/json'}], 
     noJwtError: true, 
     noTokenScheme: true 
    }) 

仍然我的ControllerMethod與授權標籤沒有達到。好吧,最後一個嘗試,也許它工作時,我加上「承載」手動:

 provideAuth({ 
     headerName: 'Authorization', 
     headerPrefix: '', 
     tokenName: 'Bearer', 
     tokenGetter:() => { 
      var token: string = JSON.parse(localStorage.getItem('bearerToken')); 
      return 'Bearer ' + token;     
     }, 
     globalHeaders: [{'Content-Type': 'application/json'}], 
     noJwtError: true, 
     noTokenScheme: true 
    }) 

和...氣罐驚喜......它的工作;)周圍一點點打的多我發現tokenName可空或可以包含任何其他內容。

相關問題