$middlewareGroups array?Consider a Laravel app where a middleware named CheckAge is registered only inside the web group in app/Http/Kernel.php. If a route uses middleware('CheckAge') directly, what happens?
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\CheckAge::class,
// other middlewares
],
];
// Route definition
Route::get('/profile', function () {
return 'Profile page';
})->middleware('CheckAge');Think about where Laravel looks for middleware when you use the middleware() method with a string.
Middleware registered only inside a group like web cannot be referenced directly by name in routes. Laravel expects middleware used by name to be registered in the $routeMiddleware array. Otherwise, it throws a 'Middleware not found' error.
LogRequests for route usage?You want to register a middleware LogRequests so you can use it in routes like ->middleware('log.requests'). Which registration in app/Http/Kernel.php is correct?
Middleware keys are case sensitive and usually use dot notation for readability.
The key used in $routeMiddleware must match exactly the string used in the route's middleware method. Using 'log.requests' matches the usage ->middleware('log.requests').
Given this Kernel snippet and route, why does the CheckUser middleware not execute?
protected $middlewareGroups = [
'api' => [
\App\Http\Middleware\CheckUser::class,
],
];
Route::get('/data', function () {
return 'Data';
})->middleware('CheckUser');Check where Laravel looks for middleware when you use a string in middleware().
Middleware inside groups like 'api' are applied only when the group is used. Using the middleware name directly requires registration in $routeMiddleware.
$middleware vs $routeMiddleware?Consider a middleware Authenticate registered in $middleware array and another middleware LogAccess registered in $routeMiddleware with key 'log.access'. If a route uses ->middleware('log.access'), what middleware run?
protected $middleware = [
\App\Http\Middleware\Authenticate::class,
];
protected $routeMiddleware = [
'log.access' => \App\Http\Middleware\LogAccess::class,
];
Route::get('/dashboard', function () {
return 'Dashboard';
})->middleware('log.access');Think about global middleware vs route middleware.
Middleware in $middleware run on every request globally. Middleware in $routeMiddleware run only when assigned to routes. So both run here.
Choose the correct statement about how Laravel middleware registration affects their usage in routes.
Recall the difference between global, group, and route middleware.
Only middleware registered in $routeMiddleware can be referenced by string name in routes. $middleware is global, $middlewareGroups apply to groups of routes.