2017-02-21 8 views
2

Я столкнулся с «Токен не может быть проанализирован с запросом» ошибка в JWT в Ларавеле.«Токен не может быть разобран по запросу» в jwt в laravel

Я пробовал один и тот же код в localhost (Xampp в Windows 7), он работает, но на сервере он не работает.

Я прошел "Authorization" маркер в заголовке, а также изменен .htaccess файл.

Пожалуйста проверьте ниже скриншоте за прошедший знак в запросе в угловом 2.

enter image description here

Ниже .htaccess файл. (Кроме того, я попробовал этот код в корневой .htaccess файл и файл .htaccess как общественном)

<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> 

И я использовал ниже код для аутентичных маркеров.

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

Вы можете попытаться вернуть '$ request-> bearerToken()' и посмотреть, можете ли вы его получить? –

+0

Кроме того, здесь указывается, может быть, это связано с вашим делом? https://github.com/tymondesigns/jwt-auth/issues/786 i.e '' '# Заголовок заголовка управления RewriteCond% {HTTP: авторизация}. RewriteRule. * - [E = HTTP_AUTHORIZATION:% {HTTP: Авторизация}] '' ' –

+0

Я пробовал $ request-> bearerToken() он возвращает * NULL * значение –

ответ

3

Из-за проблемного исключения Authorization заголовка с помощью Apache, а затем, если вам нужно, чтобы сэкономить время, вы можете передать маркер в ваши запросы, то в контроллере, проверьте, если у вас есть маркер с:

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

У вас есть результаты? если вы этого не сделаете, вам нужно проверить, имеет ли ваш параметр запроса поле token. Если у вас есть маркер в этом контроллере, то вы можете использовать метод parseToken() или просто (возможно, для отладки цели) используют:

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

Я думаю, что это должно быть достаточно, единственная ошибка может быть, что вы применили a middleware, что вызывает эту проблему на пути, к которому вы обращаетесь.

PS: Я попробовал это на Laravel 5.2 *

Я надеюсь, что это помогает.

+1

Спасибо, он работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^