2017-02-21 4 views
2

Ich bin konfrontiert "Das Token konnte nicht von der Anfrage" Fehler in JWT in Laravel geparst werden."Das Token konnte nicht von der Anfrage analysiert werden" in JWT in Laravel

Ich habe versucht, gleichen Code in localhost (Xampp in Windows 7) es funktioniert, aber auf dem Server funktioniert es nicht.

Ich habe bestanden "Authorization" Token in Header und auch .htaccess Datei geändert.

Bitte unten Screenshot erfragen geben Token in Anforderung in Winkel 2.

enter image description here

Below .htaccess Datei. (Ich habe auch versucht, diesen Code in root .htaccess-Datei und öffentliche .htaccess-Datei sowohl)

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
Options -MultiViews 
</IfModule> 

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ /index.php/$1 [L] 

RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 
</IfModule> 

Und ich habe unten Code für den authentifizierten Token verwendet.

public function image_upload(Request $request){ 
    try{ 
     if($user = JWTAuth::parseToken()->authenticate()){ 
      \Api::success(['data' => $user]); 
     }else{ 
      \Api::error("User is not found."); 
     } 
    } 
    catch(\Tymon\JWTAuth\Exceptions\TokenExpiredException $e){ 
     \Api::error(['type'=> 'expired','message' => 'Your login has been expired. Please login and try again.']); 
     exit(); 
    } 
    catch(\Tymon\JWTAuth\Exceptions\TokenInvalidException $e){ 
     \Api::error(['type'=> 'invalid','message' => $e->getMessage()]); 
     exit(); 
    } 
    catch(\Tymon\JWTAuth\Exceptions\JWTException $e){ 
     \Api::error(['type'=> 'invalid','message' => $e->getMessage()]); 
     exit(); 
    } 
} 
+0

können Sie versuchen, '$ request-> bearerToken()' zurückzugeben und zu sehen, ob Sie es haben können? –

+0

Außerdem wird hier ein Problem angegeben, das vielleicht mit Ihrem Fall zusammenhängt? https://github.com/tymondesigns/jwt-auth/issues/786 d. h. '' '# Handle Authorization Header RewriteCond% {HTTP: Autorisierung}. RewriteRule. * - [E = HTTP_AUTHORIZATION:% {HTTP: Autorisierung}] '' ' –

+0

Ich habe versucht, $ request-> BearerToken() es gibt * NULL * Wert –

Antwort

3

Wegen der problematischen Ausschluss des Authorization Header von Apache, dann, wenn Sie Zeit sparen möchten können Sie das Token in Ihre Anfragen, dann in Ihrem Controller passieren, wenn Sie das Token mit haben:

public function image_upload(Request $request){ 
    return $request->token; 
..... 
} 

Haben Sie ein Ergebnis gefunden? Wenn Sie dies nicht tun, müssen Sie überprüfen, ob Ihr Anfrageparameter das Feld token enthält. Wenn Sie das Token in diesem Controller haben, dann können Sie immer noch die parseToken() Methode verwenden oder einfach (vielleicht für das Debuggen Zweck) verwenden:

public function image_upload(Request $request){ 
    $user = JWTAuth::toUser($request->token)); 
    ....... 
} 

ich denke, das sollte ausreichend sein, ist vielleicht der einzige Fehler, dass Sie sich beworben haben a middleware, die dieses Problem auf der Route verursacht, auf die Sie zugreifen.

PS: Ich habe versucht, dies auf Laravel 5,2 *

Ich hoffe, das hilft.

+1

Danke, es funktioniert. –

Verwandte Themen