2016-04-13 10 views
2

In Winkel 1, ich in der Lage war, das HTTP-Objekt zu manipulieren, so dass der Request-Header für ein Post-Authentifizierung wie folgt enthalten:Angular2 http Standard-Header gemeinsame Authorization Token

$http.defaults.headers.common['Authorization'] = "Token " + sessionobject.token; 

return $http({ 

    method: 'POST', 
    url: SERVER_ENVIRONMENT + 'updatepath', 
    headers: { 
     'Content-Type': 'application/json', 
     'Data-Type': 'json' 
    }, 
    data: { 
     id : id, 
     ... 
    } 
}) 

Können Sie mir bitte helfen, den equvilant in finden Angular 2, die die gleiche Postanforderung generiert? viele thnx im Voraus

+0

bereits antwortete: http://stackoverflow.com/questions/34464108/angular2-set-headers-for-every -anfordern – thegio

Antwort

1

Wie Chandermani in seiner Frage sagte, können Sie Ihre eigenen Optionen für Anfragen angeben. Sie können Dinge statisch oder etwas dynamischer definieren, indem Sie die Merge-Methode überschreiben. Mit letzterem können Sie die Anforderungsoptionen auf der Grundlage der bereitgestellten Optionen für die aktuelle Anforderung erweitern.

Für weitere Informationen haben einen Blick auf diese Frage:

Da Sie Token verwenden, ein wichtiges Merkmal ist, dass sie nach einer Menge an Zeit abläuft. Dies bedeutet, dass Sie sie basierend auf Aktualisierungstoken aktualisieren müssen. Dies kann transparent in Angular2 geschehen, indem die Http-Klasse erweitert und beobachtbare Operatoren wie flatMap genutzt werden.

Für weitere Informationen haben einen Blick auf diese Frage:

5

Sie erweitern die Angular2 Klasse BaseRequestOptions benutzerdefinierte Header für alle Anrufe Http bieten

class MyOptions extends BaseRequestOptions { 
header:Headers=new Header({ 
'Authorization': 'Bearer ' + localStorage.getItem('token') 
}); 
} 

Diese Überschreibung Klasse kann dann in DI angeschlossen werden, so dass für die Anfrage Optionen http MyOptions

nimmt
bootstrap(App, [HTTP_PROVIDERS, provide(RequestOptions, {useClass: MyOptions})]); 

Das Problem mit diesem Ansatz ist, dass das Token während des Bootstrappings verfügbar sein sollte, was die meiste Zeit nicht der Fall ist.

Die andere Option besteht darin, einen benutzerdefinierten http-Dienst zu erstellen. Eine solche Implementierungen ist hier verfügbar https://gist.github.com/chandermani/9166abe6e6608a31f471