2016-09-07 13 views
0

Laravel 5では、ユーザーに対して基本認証が失敗した場合、返される既定のメッセージは「無効な資格情報」エラー文字列です。私はこの状況が発生したときにカスタムJSONエラーを返そうとしています。Laravel 5 Basic Authカスタムエラー

返されたレスポンスをベンダー/ laravel/framework/src/Illuminate/Auth/SessionGuard.php で編集できますが、ベンダのディレクトリの外でこのメッセージの動作を変更することはできません。方法はありますか?

Laravel 4を介してこれを行うにはいくつかの方法がありましたように見える:Laravel 4 Basic Auth custom error

答えて

0

は、それを考え出した私はこれを処理するためのカスタムミドルウェアを作成する必要がありましたように見えます。 このソリューションは、私のブラウザからAPIを呼び出すときには機能しませんでした.Postmanのようなツールから呼び出した場合にのみ有効です。何らかの理由で私のブラウザから呼び出すとき、私は基本的な認証プロンプトを見る前にいつもエラーが出ました。私のコントローラで

私は、新しく作成されたものにミドルウェアを変更:

カーネルで
$this->middleware('custom'); 

私はそれのための場所を追加しました:

protected $routeMiddleware = [ 
    'auth.basic.once' => \App\Http\Middleware\Custom::class, 
] 

は、それから私は、ミドルウェアを作成しました。

<?php 
namespace App\Http\Middleware; 

use Auth; 
use Closure; 
use Illuminate\Http\Request as HttpRequest; 
use App\Entities\CustomErrorResponse 
class Custom 
{ 
    public function __construct(CustomErrorResponse $customErrorResponse) { 
     $this->customErrorResponse = $customErrorResponse 
    } 
    public function handle($request, Closure $next) 
    { 
     $response = Auth::onceBasic(); 

     if (!$response) { 
      return $next($request); 
     } 
     return $this->customErrorResponse->send(); 
} 

}

:私はAPIを作成していますので、私はステートレス基本認証を使用しました