in meiner App (Angular 2/Ionic 2) Ich implementierte meine eigene Anmeldung/Authentifizierung. Grundsätzlich funktioniert es so: Beim Anmelden werden Benutzername und Passwort vom PHP-Backend validiert. Es wird ein Token generiert, das an das Frontend im Header zurückgeschickt wird (Authorization). Die Antwort vom Backend sieht wie folgt aus:Angular 2: Erhalten Autorisierung Header
HTTP/1.1 200 OK
Host: localhost:8080
Connection: close
X-Powered-By: PHP/5.6.28
Set-Cookie: PHPSESSID=jagagi2le1b8i7r90esr4vmeo6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: application/json
Authorization: d7b24a1643a61706975213306446aa4e4157d167eaad9aac989067a329c492d3
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Origin, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Content-Length: 301
Es gibt eindeutig eine Autorisierung Header mit einem Token vorhanden. CORS scheint auch richtig eingerichtet zu sein, da ich Autorisierung in der Kopfzeile Zulassen-Header sehe.
Aber, wenn ich versuche, den Header in Angular 2 zu bekommen, gibt es immer null:
private extractDataAndSetAuthHeader(res: Response) {
// Set auth header if available.
// If not available - user is not logged in. Then
// we also have to remove the token from localStorage
if(res.headers.has("Authorization"))
{
let token = res.headers.get("Authorization");
this.setToken(token);
}
else
{
// If no token is sent, remove it
this.removeToken();
}
let body = res.json();
return body.data || { };
}
Die erste Zeile des Verfahrens zurück falsch gibt. Auch wenn ich die Header überprüfen in meiner Antwort Objekt, es zeigt mir nur die folgenden (Chrome Entwickler-Tools):
[[Entries]]:
Array[4]
0:{"pragma" => Array[1]}
1:{"content-type" => Array[1]}
2:{"cache-control" => Array[1]}
3:{"expires" => Array[1]}
Es gibt keine Authorization-Header in das Objekt.
Kann mir bitte jemand helfen?
Vielen Dank im Voraus :)
'Autorisierung' wird normalerweise als Anforderungsheader verwendet, nicht als r Antwort. Warum geben Sie das Zugriffstoken nicht im Hauptteil der Antwort zurück? –
Denn soweit ich weiß, ist das der 'Authorization' Header. Bei jeder Anfrage (wenn der Benutzer angemeldet ist) sende ich einen Authorization Header in der Anfrage, überprüfe, ob das Token noch gültig ist, dann, um sicherer zu sein, erzeuge ich das Token neu und sende es zurück an das Frontend mit einem ' Autorisierungsheader Fehle ich etwas? – dave0688
http://stackoverflow.com/q/42306684/2587435 –