🎉🎉 Larasense is officially launched 🎉🎉
- Your Hub for Laravel News, Trends & Updates

Middleware Support for Specific Methods in Laravel 11.38

laravel
release
routes
Nabil Hassen
Nabil Hassen
Jan 22, 2025
Code examples screenshot
Last updated on Jan 20, 2025
Table of contents:

In Laravel 11.38, the framework introduces two new methods, middlewareFor and withoutMiddlewareFor, allowing developers to apply or exclude middleware for specific methods in resource and singleton routes. This feature, proposed by MrPunyapal in Pull Request #53313, adds precision to middleware assignment.

Examples of middlewareFor and withoutMiddlewareFor

Below are the examples showcasing how to use these methods.

Example 1: Applying Middleware with middlewareFor

You can assign middleware to specific methods within a resource route using middlewareFor.

use Illuminate\Support\Facades\Route;
 
Route::resource('users', UserController::class)
->middlewareFor('show', 'auth');
 
Route::apiResource('users', UserController::class)
->middlewareFor(['show', 'update'], 'auth');
 
Route::resource('users', UserController::class)
->middlewareFor('show', 'auth')
->middlewareFor('update', 'auth');
 
Route::apiResource('users', UserController::class)
->middlewareFor(['show', 'update'], ['auth', 'verified']);

Example 2: Applying Middleware to Singleton Routes

The middlewareFor method works seamlessly with singleton routes as well.

use Illuminate\Support\Facades\Route;
 
Route::singleton('users', UserController::class)
->middlewareFor('show', 'auth');
 
Route::apiSingleton('users', UserController::class)
->middlewareFor(['show', 'update'], 'auth');
 
Route::singleton('users', UserController::class)
->middlewareFor('show', 'auth')
->middlewareFor('update', 'auth');
 
Route::apiSingleton('users', UserController::class)
->middlewareFor(['show', 'update'], ['auth', 'verified']);

Example 3: Removing Middleware with withoutMiddlewareFor

The withoutMiddlewareFor method excludes middleware from specific methods.

use Illuminate\Support\Facades\Route;
 
Route::middleware('auth', 'verified', 'other')->group(function () {
Route::resource('users', UsersController::class)->withoutMiddlewareFor(['create', 'store'], 'verified')
->withoutMiddlewareFor('index', ['auth', 'verified'])
->withoutMiddlewareFor('destroy', 'other');
 
Route::singleton('user', UserController::class)->withoutMiddlewareFor('show', ['auth', 'verified'])
->withoutMiddlewareFor(['create', 'store'], 'verified')
->withoutMiddlewareFor('destroy', 'other');
});

Conclusion

The new middlewareFor and withoutMiddlewareFor methods in Laravel 11.38 simplify the process of managing middleware for individual methods in resource and singleton routes. These features provide flexibility and precision in middleware assignment, enhancing the developer experience.

This feature is available starting in Laravel 11.38. For more details, check out the official pull request.

Nabil Hassen
Nabil Hassen
Full Stack Web Developer

Stay Updated.

I'll you email you as soon as new, fresh content is published.

Thanks for subscribing to my blog.

Latest Posts

Larasenes Logo
Larasense
Stay updated on Laravel news, trends, and updates with curated content from top blogs, YouTube, and podcasts in a sleek, user-friendly design.