2015-12-17 12 views
5

würde ich Verwendung WP REST API-Auth mit diesem Plugin mag: https://github.com/Tmeister/wp-api-jwt-authWP Rest api jwt Auth

ich das Token mit diesem req auf POST erhalten: http://localhost/wp_rest/wp-json/jwt-auth/v1/token

Aber ich kann den Antrag für die Post nicht tun mehod: localhost/wp_rest/wp-json/wp/v2/Beiträge

ich erhalte den Fehler :

{ 
    "code": "rest_forbidden" 
    "message": "You don't have permission to do this." 
    "data": { 
     "status": 403 
    } 
} 

In meinem Kopf habe ich dies:

Authorization: Bearer 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3RcL3dwX3Jlc3QiLCJpYXQiOjE0NTAzNDEwMTgsIm5iZiI6MTQ1MDM0MTAxOCwiZXhwIjoxNDUwOTQ1ODE4LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.rGNPsU4EocClWLYWaSDs1hDJMODszg-eKfqnKSEsiw0 

Ich bin mit localhost/wp_rest/wp-json/jwt-Auth/v1/Token/validate versucht, aber ich bekomme diese Fehlermeldung:

{ 
    "code": "jwt_auth_no_auth_header", 
    "message": "Authorization header not found.", 
    "data": { 
     "status": 403 
    } 
} 

Irgendeine Idee?

Antwort

4

Es sieht so aus, als hätten Sie Autorisierungsheader nicht in Ihre Anfrage aufgenommen. Sie müssen 'Authorization': 'Bearer PLACE_TOKEN_HERE' in Ihren Anforderungsheadern hinzufügen.

Als Beispiel:

var req = { 
    method: 'POST', 
    url: window.location.href + 'wp-json/wp/v2/posts', 
    headers: { 
     'Authorization': 'Bearer ' + TOKEN_GOES_HERE 
    } 
    data: DATA TO PASS GOES HERE 
} 
$http(req); 
+0

Dieses mein Problem gelöst, sondern über ein Toolset zu testen. –

4

Wenn die Antwort zur Verfügung gestellt von Leo Gono und Tunaki immer noch nicht Ihr Problem lösen, stellen Sie sicher, dass Sie die following code zu Ihrem .htaccess hinzugefügt haben.

RewriteEngine on 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 

Stellen Sie sicher, dass Sie diese Zeilen vor die letzte Zeile mit einem "[L]" in Ihrem .htaccess setzen, sonst wird es nicht verarbeitet.

Es ist möglich, dass der Authorization-Header vom Server der Framework-Einstellungen verworfen wird. (Ich musste die htaccess für Laravel ändern)

+0

Es ist nicht erforderlich, den HTTP-Autorisierungsheader im nginx-Server und Windows-Server zu aktivieren. Standardmäßig funktioniert es, ohne etwas zu tun. –

+0

Oh, das ist gut zu wissen. Ich musste das für Apache ändern. –

+2

Stellen Sie sicher, dass Sie diese Zeilen vor die letzte Zeile mit einem "[L]" in Ihrem .htaccess setzen, sonst wird sie nicht verarbeitet. –

0

Ich stieß auf ähnliche Probleme beim Einrichten der gleichen Plugin, so erstellte ich ein Video detailliert den Prozess, den ich folgte, um schnell eine Testumgebung zu starten, installieren Sie das Plugin, führen Sie die Notwendiges Setup für das Plugin zu arbeiten und dann seine Funktionalität zu validieren.

Hier ist sie: https://youtu.be/Mp7T7x1oxDk

0

Ich hatte genau das gleiche Problem. Meine Lösung war einfach.

Mit dem Tool (in meinem Fall Postman (https://www.getpostman.com)), ich habe ausgewählt, um die Authentifizierung Header (Erzwingen der Überschrift) manuell hinzuzufügen. Möglicherweise möchten Sie es manuell festlegen, wenn Sie Code verwenden, im Abschnitt HTTP-Header (nicht als Parameter, nur für den Fall :)).

Checked enable Authentication header

Mit freundlichen Grüßen Reinhard