Adding multiple middleware to Laravel route

PhpLaravel

Php Problem Overview


Per laravel doc, I can add the auth middleware as follows:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function ()    {
        // Uses Auth Middleware
    });

    Route::get('user/profile', function () {
        // Uses Auth Middleware
    });
});

I've also seen middleware added as follows:

Route::group(['middleware' => ['web']], function() {
  // Uses all Middleware $middlewareGroups['web'] located in /app/Http/kernel.php?
  Route::resource('blog','BlogController'); //Make a CRUD controller
});

How can I do both?

PS. Any comments providing insight on what the bottom four lines of code are doing would be appreciated

Php Solutions


Solution 1 - Php

To assign middleware to a route you can use either single middleware (first code snippet) or middleware groups (second code snippet). With middleware groups you are assigning multiple middleware to a route at once. You can find more details about middleware groups in the docs.

To use both (single middleware & middleware group) you can try this:

Route::group(['middleware' => ['auth', 'web']], function() {
  // uses 'auth' middleware plus all middleware from $middlewareGroups['web']
  Route::resource('blog','BlogController'); //Make a CRUD controller
});

Solution 2 - Php

You may also assign multiple middleware to the route:

Route::get('/', function () {
//
})->middleware('first', 'second');

Reference

Solution 3 - Php

You could also do the following using the middleware static method of the Route facade:

Route::middleware(['middleware1', 'middlware2'])
    ->group(function () {
        // Your defined routes go here
    });

The middleware method accepts a single string for one middleware, or an array of strings for a group of middleware.

Solution 4 - Php

Route::middleware(['auth:api'])->middleware(['second:middleware'])
    ->prefix('yourPrefix')->group(function () {
        //Add your routes here
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1032531View Question on Stackoverflow
Solution 1 - PhpkrlvView Answer on Stackoverflow
Solution 2 - PhpAnandan KView Answer on Stackoverflow
Solution 3 - PhpAhmad Baktash HayeriView Answer on Stackoverflow
Solution 4 - PhpMilton InguaneView Answer on Stackoverflow