0
0
Laravelframework~5 mins

Middleware parameters in Laravel

Choose your learning style9 modes available
Introduction

Middleware parameters let you send extra information to middleware. This helps middleware act differently based on what you pass.

You want to check user roles like admin or editor in one middleware.
You need to limit access to certain pages based on a condition.
You want to reuse the same middleware but with different rules.
You want to pass a value to control middleware behavior without writing new middleware.
Syntax
Laravel
Route::get('profile', function () {
    // ...
})->middleware('role:admin');
Parameters come after the middleware name, separated by a colon (:).
Multiple parameters are separated by commas (,).
Examples
This sends 'admin' as a parameter to the 'role' middleware.
Laravel
Route::get('dashboard', function () {
    // ...
})->middleware('role:admin');
This sends '18' to the 'checkAge' middleware to check minimum age.
Laravel
Route::get('settings', function () {
    // ...
})->middleware('checkAge:18');
This sends two parameters 'view' and 'edit' to the 'permission' middleware.
Laravel
Route::get('report', function () {
    // ...
})->middleware('permission:view,edit');
Sample Program

This middleware checks if the logged-in user has the role 'admin'. The role is passed as a parameter 'admin' to the middleware. If the user is not admin, it returns 'Access denied.' Otherwise, it shows 'Welcome Admin!'.

Laravel
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckRole
{
    public function handle(Request $request, Closure $next, $role)
    {
        if ($request->user()?->role !== $role) {
            return response('Access denied.', 403);
        }
        return $next($request);
    }
}

// In routes/web.php

use Illuminate\Support\Facades\Route;

Route::middleware(['auth', 'checkRole:admin'])->get('/admin', function () {
    return 'Welcome Admin!';
});
OutputSuccess
Important Notes

Middleware parameters are strings by default. Convert them inside middleware if needed.

Use question mark operator (null safe) to avoid errors if user is not logged in.

Parameters help keep middleware flexible and reusable.

Summary

Middleware parameters let you customize middleware behavior easily.

Pass parameters after middleware name separated by colon and commas.

Use parameters inside middleware handle method to control logic.