Messaggio non autorizzato custom in Laravel

Mattepuffo's logo
Messaggio non autorizzato custom in Laravel

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!


Condividi

Commentami!