如何在Laravel / Lumen中捕获401响应?

时间:2017-02-02 06:21:20

标签: php laravel api lumen

我正在为授权用户编写api。

使用我当前的代码,我可以看到响应代码 200 如果响应是401而不是200,我无法捕获。我收到错误页面,而不是我的401响应的错误消息。

这是我在Lumen的招摇服务器

rm

这是我在Laravel的模型

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

基本上如果状态码是200我收到此消息

enter image description here

但如果状态代码为401则会出错。

enter image description here

2 个答案:

答案 0 :(得分:1)

我建议在app\Exceptions\Handler.php中处理通用例外。 在此文件中,存在render函数。

要处理不同类型的Exception,您可以尝试:

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

    return parent::render($request, $e);
}

答案 1 :(得分:0)

将try catch块应用于您的代码

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