Das Übergeben des Bearer-Tokens in yii2 rest gibt den Fehler 401 zurück

9

Ich verwende angular2 und yii2 restful services, aber es schlägt fehl

Das ist mein angular2 Teil

%Vor%

Dies ist der httpclientService

%Vor%

Dies ist mein Backend in Yii2

%Vor%

Und die yii2-Aktion schlägt fehl und gibt einen Fehler durch unbefugten Zugriff zurück

%Vor%

Wenn ich Yii::$app->request->headers;

überprüfe

Wie Sie sehen können, ist das Bearer-Token

gesetzt

Dies ist mein Benutzermodell

%Vor%

Warum gibt es weiterhin einen Fehler 401 unberechtigten Zugriff zurück und doch, wenn ich den gleichen Wert von Authkey benutze und Autorisierungsträger-Header im Postboten setze, funktioniert es

Nach ein paar Nachforschungen fand ich heraus, dass jedes Mal, wenn angular2 eine Anfrage stellt, eine Optionsanfrage gesendet wird, die fehlschlägt

    
GEOFFREY MWANGI 23.01.2017, 07:07
quelle

2 Antworten

1

Für diejenigen, die mit diesem Problem konfrontiert sind, habe ich herausgefunden, dass dies durch die HttpBearerAuth verursacht wurde und als ich zu QueryParamAuth gewechselt habe, funktioniert jetzt auch ich ein paar andere Änderungen als

%Vor%

2, In meiner config main.php

%Vor%

3.In der .htaccess Datei im Projektstamm habe ich

hinzugefügt %Vor%

Also meine angular2 post Anfrage sieht wie

aus %Vor%

Daher wird das Zugriffstoken immer als Abfrageparameter

übergeben

Der Hauptgrund ist, weil ich herausgefunden habe, dass, wenn der Browser eine Kopfzeile neben dem Inhaltstyp sendet, eine Optionsanfrage ausgelöst wird

Jetzt sehen meine Header wie

aus %Vor%     
GEOFFREY MWANGI 26.01.2017, 08:16
quelle
1

Ich habe einen anderen Ansatz gewählt:

Hinzugefügt

%Vor%

in der Steuerung.

Behalten Sie die Verhaltensfunktion wie bei Ihrer Frage.

Wie Sie bereits erwähnt haben, sendet der Browser eine Preflight-Anfrage.

Ich gehe davon aus, dass Sie eine Cross-Browser-Anfrage stellen (localhost: 4200), so dass der Browser zuerst eine OPTIONS-Anfrage an den Server stellt, um die "Access-Control-Allow" -Einstellungen herauszufinden, aber ohne Zugriffstoken in der Kopfzeile. So wird ein 401 ausgelöst und der CORS-Prozess wird unterbrochen.

Der Unterschied ist, dass Sie auf diese Weise das Berechtigungstoken in einer Kopfzeile haben können.

    
Jannes Botis 26.01.2017 11:04
quelle

Tags und Links