Vo svete webového vývoja je Laravel populárny PHP framework, ktorý poskytuje širokú škálu funkcií a nástrojov na rýchle a efektívne budovanie webových aplikácií. Jednou z jeho najužitočnejších funkcií je middleware, ktorý umožňuje vývojárom filtrovať HTTP požiadavky vstupujúce do aplikácie.
Hoci je Laravel middleware výkonný nástroj, existujú situácie, kedy je dôležité vylúčiť ho z určitých routes alebo controllerov. V tomto príspevku sa pozrieme na to, prečo môže byť vylúčenie Laravel middleware nevyhnutné pre zachovanie bezpečnosti a výkonu vašej webovej aplikácie.
Motivácia #
Tri hlavné dôvody, prečo môže byť vylúčenie middleware na routes potrebné:
- Optimalizácia výkonu: Niektoré middleware funkcie môžu byť náročné na zdroje, najmä pri práci s veľkým množstvom dát alebo zložitou logikou. Vylúčením middleware na routes, kde nie je potrebný, môžete výrazne zlepšiť výkon aplikácie.
- Bezpečnostné požiadavky: V závislosti od bezpečnostných požiadaviek vašej aplikácie môže byť potrebné vylúčiť middleware na určitých routes, aby ste zabránili neoprávnenému prístupu alebo ochránili citlivé údaje. Napríklad možno budete chcieť vylúčiť middleware, ktorý zaznamenáva aktivitu používateľov na routes spracúvajúcich citlivé informácie.
- Potreby prispôsobenia: Niekedy môže byť potrebné upraviť správanie určitých routes alebo controllerov spôsobom, ktorý je v rozpore s funkčnosťou určitého middleware. V týchto prípadoch môže byť vylúčenie middleware na konkrétnych routes alebo controlleroch nevyhnutné na dosiahnutie požadovaného správania.
Prístupy #
Takto je možné odstrániť pripojený middleware (nie globálny middleware) z konkrétnej route, prevzaté z dokumentácie:
Route::get('/profile', function () {
// ...
})->withoutMiddleware([MyCustomMiddleware::class]);
Existuje aj tento spôsob, ktorý nie je zdokumentovaný, ale zdá sa, že funguje:
Route::group(['prefix' => 'prefix', 'excluded_middleware' => ['api']], function () {
Route::get('/profile', function () {
// ...
});
});
V predchádzajúcich verziách Laravelu bol middleware routes zobrazený automaticky pomocou:
php artisan route:list
V súčasnosti, aspoň v laravel/framework verzie v9.52.4, je middleware
štandardne skrytý. Je možné ho zobraziť pomocou verbose alebo skrátenej
voľby -v:
php artisan route:list -v
V prípade, že to neviete, voľba --path je celkom šikovná v kombinácii s
vyššie uvedeným:
php artisan route:list --path user -v
Užite si to!
Odkazy #
- https://stackoverflow.com/a/63367764/1972509
- https://laravel.com/docs/10.x/middleware
- https://github.com/laravel/framework/issues/33041
- https://github.com/laravel/framework/pull/32993
- https://laracasts.com/discuss/channels/laravel/laravel-route-list-php-artisan-routelist-displaying-middleware-on-new-lines?page=1&replyId=614735