2017-11-08 31 views
1

:デバッグがオフになっているときLaravel 5.5基本認証ログイン例外

throw new UnauthorizedHttpException('Basic', 'Invalid credentials.'); 

はしかし、これは「ジェネリックを返します。何かが間違っていた "というエラーメッセージが表示されます。

認証エラーが発生したときにカスタムJSONエラーを返すために例外ハンドラ(app \ Exceptions \ Handler.php)を編集しようとしています。

/** 
* Render an exception into an HTTP response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Exception $exception 
* @return \Illuminate\Http\Response 
*/ 
public function render($request, Exception $exception) 
{ 

    //Handle API authentication failure 
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException) { 
     return response()->json(['error' => 'Invalid user name or password.'], 401); 
    } 

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

しかし、この常に戻りユーザーが有効な資格情報を入力してもこのエラーメッセージ、。 ifブロックをコメントアウトすると、同じ資格情報が突然動作します。私は間違って何をしていますか?

+0

ハンドラのrender()メソッドがトリガされた場合は、明らかに例外がスローされます。 –

+0

@ jedrzej.kuryloもっと具体的になりますか? – Kevin

+0

どこに投げられたのかわかりません。デバッグを有効にし、例外を再スローし、スローされたトレースをチェックインします。 –

答えて

0

応答には適切なヘッダーが含まれている必要があります。

public function render($request, Exception $exception) 
{ 

    //Handle API authentication failure 
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException) { 
     $headers = array('WWW-Authenticate' => 'Basic'); 
     return response()->json(['error' => 'Invalid user name or password.'], 401); 
    } 

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