2016-09-07 5 views
0

In Laravel 5, wenn grundlegende Auth für einen Benutzer fehlschlägt, dann ist die Standardmeldung, die zurückgegeben wird, eine Fehlermeldung "ungültige Anmeldeinformationen". Ich versuche, einen benutzerdefinierten JSON-Fehler zurückzugeben, wenn diese Situation auftritt.Laravel 5 Basic Auth benutzerdefinierter Fehler

Ich kann die zurückgegebene Antwort in Vendor/Laravel/Framework/src/Illuminate/Auth/SessionGuard.php bearbeiten, aber ich habe nicht gesehen, wo Sie das Verhalten dieser Nachricht außerhalb des Herstellers Verzeichnis ändern können. Gibt es einen Weg?

Sieht aus wie es einige Möglichkeiten, waren dies 4 bis Laravel zu tun: Laravel 4 Basic Auth custom error

Antwort

0

es heraus, sieht aus wie ich eigene Middleware zu schaffen hatte, dies zu umgehen. Beachten Sie, dass diese Lösung nicht funktionierte, wenn ich meine API von meinem Browser aus aufruft, nur wenn sie von einem Tool wie Postman aufgerufen wird. Aus irgendeinem Grund, wenn ich es von meinem Browser aus anrufe, bekam ich immer den Fehler, bevor ich die grundlegende Auth-Eingabeaufforderung sah.

In meinem Controller änderte ich die Middleware auf meine neu erstellte:

$this->middleware('custom'); 

In Kernel habe ich die Lage für sie:

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

Dann habe ich die Middleware erstellt. Ich benutzte Stateless Grund Auth da ich die Schaffung einer 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(); 
} 

}