Как показать исключение в jwt laravel 5.4 api в почтальонах - PullRequest
0 голосов
/ 11 декабря 2018

В моем приложении laravel я установил пакеты jwt и установил промежуточное ПО, но токен недействителен, просрочен или не отправлен, он показывает ошибку не в формате JSON. Ниже приведены подробности моих проблем.Все работает правильно, но исключение не генерируется в формате json. Исключение выдается как ошибка (Could not decode token: Error while decoding to JSON: Malformed UTF-8 characters, possibly incorrectly encoded), которая является проблемой.

это мой jwtMiddleware

public function handle($request, Closure $next)
    {
        try 
        {
            $user = JWTAuth::parseToken()->authenticate();
        } 
        catch (\JWTException $e) 
        {
            if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException)
            {
                return response()->json(['status' => 'Token is Invalid']);
            }
            else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException)
            {
                return response()->json(['status' => 'Token is Expired']);
            }
            else
            {
                return response()->json(['status' => 'Authorization Token not found']);
            }
                return response()->json(['status' => $e]);
        }
        return $next($request);
    } 

этоошибка отображается, как показано на изображении , показано исключение как ошибка

и ожидаемая ошибка, подобная этой требуется исключение

отправка запроса почтальона отправкапочтальон

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

I show my exception in json formate below way, you can try with this. to show exception in jwt you give this in catch JWTException

$credentials = $request->only('user_name', 'password');
            try {
                if (! $token = JWTAuth::attempt($credentials)) {
                    return response()->json([
                        'code'      => 404,
                        'response'  => 'error',
                        'errors'    => ['massage' => 'invalid email/ or password.']
                    ]);
                }
            } catch (JWTException $e) {
                return response()->json([
                    'code'      => 500,
                    'response'  => 'error',
                    'errors'    => ['massage' => 'failed to create token.']
                ]);
            }
0 голосов
/ 11 декабря 2018

Убедитесь, что отправляемый запрос имеет этот заголовок

{ Authorization: 'Bearer TOKEN' }

Как добавить этот заголовок в Axios:

axios.interceptors.request.use(request => {
  if (store.getters.authToken) {
    request.headers.common['Authorization'] = `Bearer ${store.getters.authToken}`
  }

  return request
})

Убедитесь, что ваш .htaccess имеет правило

RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...