Come personalizzazione il middleware di Laravel 11

Laravel 11 è caratterizzato da un middleware semplificato, e da una configurazione molto snella.
Le personalizzazioni del middleware possono essere fatte direttamente nel file bootstrap/app.php.
In questo articolo ti farò vedere diversi esempi di configurazione middleware di laravel, base e configurazione avanzata.
3 minuti
Come personalizzare il middleware di laravel
Come reindirizzare utenti e ospiti a un indirizzo definito
Nel caso in cui volessimo reindirizzare, sia utenti autenticati che utenti ospiti a un indirizzo specifico, possiamo utilizzare il metodo redirectTo(). In particolare l'impostazione deve essere fatta nel file bootstrap/app.php, vediamo un esempio in cui gli ospiti vengono sempre reindirizzati alla pagina di login, mentre gli utenti che conosciamo, cioè gli autenticati, vengono reindirizzati sulla dashboard di lavoro:
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectTo(
guests: '/admin/login',
users: '/dashboard'
);
})
In precedenza, questa configurazione veniva gestita in Authenticated.php e RedirectIfAuthenticated.php
Come reindirizzare gli ospiti a un indirizzo specifico
Per impostare un reindirizzamento specifico per gli ospiti, è possibile utilizzare il metodo redirectGuestsTo(). In particolare l'impostazione deve essere fatta nel file bootstrap/app.php, vediamo un esempio in cui gli ospiti vengono sempre reindirizzati alla pagina di login:
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectGuestsTo('/admin/login');
})
Nelle versioni precedenti, questo reindirizzamento veniva gestito all'interno del file di middleware Authenticated.php.
Come specificare quali cookie escludere dalla crittografia
Per escludere cookie dalla crittografia, il middleware di laravel 11 ci mette a disposizione il metodo encryptCookies(), dove il parametro ci consente di specificare i cookie. Vediamo un esempio:
php->withMiddleware(function (Middleware $middleware) {
$middleware->encryptCookies(except: );
})
Nelle versioni precedenti questa funzionalità era inserita in EncryptCookies.php.
Esclusione di route dalla protezione CSRF
Qualora servisse escludere alcune rotte dalla protezione CSRF, Laravel Middleware ci mette a disposizione il metodo validateCsrfTokens(), che opportunamente utilizzato ci consente di escludere le rotte specificate.
Nel seguente codice, vediamo un esempio in cui escludiamo le rotte /foo/* e /bar. Il codice deve essere inserito nel file bootstrap/app.php
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: );
})
Nelle precedenti versioni di Laravel, questa impostazione veniva fatta nel file VerifyCsrfToken.php.
Esclusione di route dalla URL Signature Validation
Per escludere una rotta (o route) dalla convalida della firma URL, laravel middleware ci mette a disposizione il metodo validateSignatures(), vediamo un esempio:
->withMiddleware(function (Middleware $middleware) {
$middleware->validateSignatures(except: );
})
Nelle versioni precedenti di Laravel, la cofigurazione Middleware veniva gestita nel file ValidateSignature.php.
Impedire la conversione di stringhe vuote in null
Per controllare il comportamento della conversione di stringhe vuote in null, utilizzare il metodo:convertEmptyStringsToNull()
->withMiddleware(function (Middleware $middleware) {
$middleware->convertEmptyStringsToNull(except: );
})
Questo approccio sostituisce la necessità di rimuovere da ConvertEmptyStringsToNullapp/Http/Kernel.php.
Come prevenire il trimming delle stringhe nelle richieste
Per impedire il taglio delle stringhe su percorsi specifici, è possibile utilizzare il metodo:trimStrings()
->withMiddleware(function (Middleware $middleware) {
$middleware->trimStrings(except: );
})
In precedenza, questa impostazione era gestita in TrimStrings.php.
Personalizzazioni avanzate del middleware
Gestione dello stack middleware globale
È possibile aggiungere, rimuovere o sostituire il middleware all'interno dello stack globale:
->withMiddleware(function (Middleware $middleware) {
$middleware->prepend(SomeMiddleware::class);
$middleware->append(AnotherMiddleware::class);
$middleware->remove(UnwantedMiddleware::class);
$middleware->replace(OldMiddleware::class, NewMiddleware::class);
})
Utilizzo dei gruppi middleware
Laravel consente personalizzazioni all'interno di gruppi middleware:
->withMiddleware(function (Middleware $middleware) {
$middleware->group('custom', );
$middleware->prependToGroup('web', NewWebMiddleware::class);
$middleware->appendToGroup('api', NewApiMiddleware::class);
$middleware->removeFromGroup('web', OldWebMiddleware::class);
$middleware->replaceInGroup('api', OldApiMiddleware::class, NewApiMiddleware::class);
})
Opzioni middleware specifiche per API
Per le applicazioni incentrate sulle API, è possibile sfruttare i metodi progettati specificamente per le API:
->withMiddleware(function (Middleware $middleware) {
$middleware->statefulApi(); // Enables Sanctum's stateful middleware
$middleware->throttleApi('custom_limiter', true); // Sets API rate limiting
})
Configurazione di proxy e host attendibili
Se l'applicazione si trova dietro un proxy, è possibile configurare proxy e host attendibili:
->withMiddleware(function (Middleware $middleware) {
$middleware->trustHosts();
$middleware->trustProxies();
})
Abilitazione dell'autenticazione della sessione
Per le applicazioni che richiedono sessioni autenticate nel gruppo "web", abilitarle con:
->withMiddleware(function (Middleware $middleware) {
$middleware->authenticateSessions();
})
La configurazione middleware di Laravel 11 offre semplicità e flessibilità. Che tu stia personalizzando i percorsi, proteggendo l'API o regolando gli stack middleware, queste opzioni ti consentono di ottimizzare il middleware della tua applicazione per soddisfare le tue esigenze.
Ercole Palmeri
#PHPTutorial #SoftwareDeveloper #softwaredevelopment #SoftwareEngineering #tutorialdilaravelPHP https://bloginnovazione.it/middleware-laravel/53596/
Commenti
Posta un commento