Laravel - Middleware - Middleware Parameters

Middleware can also receive additional parameters. For example, if your application needs to verify that the authenticated user has a given "role" before performing a given action, you could create an EnsureUserHasRole middleware that receives a role name as an additional argument.

Additional middleware parameters will be passed to the middleware after the $next argument:

namespace App\Http\Middleware;

use Closure;

class EnsureUserHasRole
     * Handle the incoming request.
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string  $role
     * @return mixed
    public function handle($request, Closure $next, $role)
        if (! $request->user()->hasRole($role)) {
            // Redirect...

        return $next($request);


Middleware parameters may be specified when defining the route by separating the middleware name and parameters with a :. Multiple parameters should be delimited by commas:

Route::put('/post/{id}', function ($id) {