2017-02-02 3 views
0

Я пишу api для авторизации пользователей.Как поймать 401 ответ в Laravel/Lumen?

С моим текущим кодом я могу поймать, если код ответа является однако я не могу поймать, если ответ 401 вместо 200. Вместо того, чтобы сообщение об ошибке с моим 401 ответа, я получаю страницу ошибки.

это мой чванство сервер в люменах

if($input['phone']==$this->phone && $input['password'] == $this->password){ 
      return response()->json([ 
      'redirect_uri' => $redirect_uri, 
      'token' => $this->token 
      ]); 
     } 

     return response()->json([ 
      'redirect_uri' => $redirect_uri, 
      'errorMsg' => 'User Not found or id psw wrong' 
      ],401); 

и это моя модель в Laravel

if($response->getStatusCode() == 401){ 
      dd('you are not authorized'); 
     } 

     if($response->getStatusCode() == 200){ 
      dd('you are authorized'); 
      //Store user credentials on cache 
      CacheStore::storeUserCredentials(json_decode((string) $response->getBody(), true)); 
     } 

в основном, если StatusCode 200 я получаю соответствующее сообщение

enter image description here

Но если код состояния равен 401, он дает ошибку.

enter image description here

+0

Как вы вызываете API? – Alfa

ответ

0

Нанести попытка поймать блок кода

try{ 
    // your api call 
} 
catch(Exception $e) 
{ 
    if ($e instanceof HttpException && $e->getStatusCode()== 401) 
    { 
     dd('you are not authorized'); 
    } 
} 
1

Я рекомендую обработки универсальных исключений в app\Exceptions\Handler.php. В этом файле существует функция render.

Чтобы иметь дело с различными типами исключений, вы можете попробовать:

public function render($request, Exception $e) 
{ 
    if ($e instanceof SomeTypeException1) 
    { 
     #handle it 
    } 
    else if($e instanceof SomeTypeException2) 
    { 
     #handle it 
    } 

    return parent::render($request, $e); 
} 
Смежные вопросы