Messaggio non autorizzato custom in Laravel
Laravel nasce per la creazione di applicazioni web "standard", e quindi nel caso di utente non autorizzato, ti rimanda ad una pagina che in genere è quella di login.
Questo, però, non è un comportamento che funziona bene nel caso in cui si stia creando una API e si viene autenticati con token.
Nel caso di token mancante / scaduto, bisogna rispondere con un JSON.
La prima cosa da fare, e già basterebbe, è inviare questo nell'header della chiamata lato client:
'Accept: 'application/json'
Laravel così sa che deve rispondere con JSON, e non con un redirect.
Se poi vogliamo anche inviare un messaggio custom, possiamo fare una modifica alla classe Handler, che trovate in app -> Exceptions:
namespace App\Exceptions;
use Illuminate\AuthAuthenticationException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler {
............................
protected function unauthenticated($request, AuthenticationException $exception) {
return response()->json([
'res' => 'ko',
'message' => 'Non sei autorizzato a vedere questa risorsa!'
]);
}
}
Enjoy!
php laravel exceptionhandler json
Commentami!