& quot; Токен не может быть проанализирован из запроса & quot; в JWT в Laravel

Я сталкиваюсь «Токен не может быть проанализирован из запроса» ошибка в JWT в Laravel.

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

я прошел «Авторизация» токен в заголовке, а также изменился .Htaccess файл.

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

введите описание изображения здесь

Ниже .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();
}
}

2

Решение

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

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

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

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

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

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

Надеюсь, это поможет.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector