2016-09-07 2 views
0

В Laravel 5, если базовое auth не выполняется для пользователя, тогда возвращаемое по умолчанию сообщение является ошибкой «Недопустимые учетные данные». Я пытаюсь вернуть пользовательскую ошибку JSON при возникновении этой ситуации.Laravel 5 Basic Auth пользовательская ошибка

Я могу отредактировать возвращаемый ответ в vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php Однако я не видел, где вы можете изменить поведение этого сообщения вне каталога поставщика. Есть ли способ?

Похоже было несколько способов сделать это через Laravel 4: Laravel 4 Basic Auth custom error

ответ

0

Фигурные это, похоже, что я должен был создать пользовательский межплатформенное справиться с этим. Обратите внимание, что это решение не срабатывало при вызове моего API из моего браузера, только при вызове его из инструмента, такого как Postman. По какой-то причине, когда вы вызываете его из моего браузера, я всегда получаю сообщение об ошибке перед тем, как увидеть базовое приглашение auth.

В моем контроллере я изменил к промежуточному на мои вновь созданные один:

$this->middleware('custom'); 

В ядре я добавил место для него:

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

Затем я создал промежуточный. Я использовал Stateless Basic Auth, поскольку я создаю API:

<?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(); 
} 

}

Смежные вопросы