Bird
Raised Fist0
Laravelframework~5 mins

Controller middleware in Laravel - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is controller middleware in Laravel?
Controller middleware in Laravel is a way to filter HTTP requests entering your application by running code before or after a controller action. It helps manage tasks like authentication, logging, or input validation.
Click to reveal answer
beginner
How do you apply middleware to a Laravel controller?
You apply middleware in a controller by calling the $this->middleware('middlewareName') method inside the controller's constructor. This runs the middleware on all or selected controller methods.
Click to reveal answer
intermediate
How can you restrict middleware to only certain methods in a controller?
Use the only or except options when applying middleware, like $this->middleware('auth')->only(['index', 'show']) to run middleware only on those methods.
Click to reveal answer
beginner
What happens if middleware denies a request in Laravel?
If middleware denies a request, it usually returns a response like a redirect or error before the controller method runs, stopping further processing.
Click to reveal answer
intermediate
Can you apply multiple middleware to a single controller in Laravel?
Yes, you can apply multiple middleware by passing an array to $this->middleware(['auth', 'verified']). They run in the order listed.
Click to reveal answer
How do you add middleware to a Laravel controller?
ABy adding middleware in the model class
BInside the controller constructor using $this->middleware()
CBy editing the routes/web.php file only
DBy calling middleware in the view file
Which method restricts middleware to specific controller methods?
Aboth only() and except()
Bexcept()
Conly()
Dmiddleware()
What does middleware do if it blocks a request?
AReturns a response before controller runs
BRuns the controller anyway
CDeletes the request
DLogs the request and continues
Can you apply multiple middleware to one controller?
AOnly in the route file
BNo, only one middleware per controller
COnly if middleware are chained in routes
DYes, by passing an array to $this->middleware()
Where is controller middleware typically defined?
AIn the CSS file
BIn the blade view
CIn the controller constructor
DIn the database migration
Explain how to apply middleware to only some methods of a Laravel controller.
Think about how to include or exclude methods when calling $this->middleware.
You got /4 concepts.
    Describe what happens when middleware denies a request in Laravel.
    Middleware can stop the request before it reaches the controller.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of middleware in a Laravel controller?
      easy
      A. To connect the controller to the database
      B. To define routes for the controller
      C. To run code before or after controller methods for access control or modification
      D. To create views for the controller

      Solution

      1. Step 1: Understand middleware role

        Middleware acts as a filter that runs before or after controller methods to control access or modify requests/responses.
      2. Step 2: Differentiate from other controller tasks

        Defining routes, connecting to databases, or creating views are not middleware responsibilities.
      3. Final Answer:

        To run code before or after controller methods for access control or modification -> Option C
      4. Quick Check:

        Middleware controls access and actions around controller methods = A [OK]
      Hint: Middleware filters requests before/after controller methods [OK]
      Common Mistakes:
      • Confusing middleware with routing
      • Thinking middleware creates views
      • Assuming middleware connects to database
      2. Which is the correct way to add middleware to a Laravel controller constructor?
      easy
      A. $this->middleware('auth');
      B. middleware->add('auth');
      C. addMiddleware('auth');
      D. useMiddleware('auth');

      Solution

      1. Step 1: Recall Laravel middleware syntax

        In Laravel controllers, middleware is added inside the constructor using $this->middleware('name');.
      2. Step 2: Check other options for syntax correctness

        Options A, C, and D do not follow Laravel's middleware syntax and will cause errors.
      3. Final Answer:

        $this->middleware('auth'); -> Option A
      4. Quick Check:

        Use $this->middleware() in constructor = B [OK]
      Hint: Use $this->middleware('name') inside constructor [OK]
      Common Mistakes:
      • Using incorrect method names
      • Calling middleware outside constructor
      • Missing $this keyword
      3. Given this controller constructor code:
      public function __construct() {
          $this->middleware('auth')->only('edit', 'update');
      }

      Which methods will have the 'auth' middleware applied?
      medium
      A. Only the edit and update methods
      B. All methods except edit and update
      C. All methods in the controller
      D. No methods, syntax error

      Solution

      1. Step 1: Understand the use of only() method

        The only('edit', 'update') limits middleware to run only on these two methods.
      2. Step 2: Confirm middleware application

        Middleware 'auth' applies only to 'edit' and 'update', other methods are unaffected.
      3. Final Answer:

        Only the edit and update methods -> Option A
      4. Quick Check:

        only() limits middleware to specified methods = D [OK]
      Hint: only() applies middleware to listed methods only [OK]
      Common Mistakes:
      • Confusing only() with except()
      • Assuming middleware applies to all methods
      • Thinking syntax causes error
      4. Identify the error in this controller constructor:
      public function __construct() {
          $this->middleware('auth')->except('index', 'show');
          $this->middleware('log');
      }
      medium
      A. Middleware 'log' will override 'auth' middleware
      B. You cannot call middleware twice in constructor
      C. except() method requires array, not multiple arguments
      D. No error; both middleware apply correctly

      Solution

      1. Step 1: Check multiple middleware calls

        Laravel allows multiple middleware calls in constructor; they stack and apply in order.
      2. Step 2: Validate except() usage

        except() accepts multiple string arguments or an array; both are valid.
      3. Final Answer:

        No error; both middleware apply correctly -> Option D
      4. Quick Check:

        Multiple middleware calls and except() usage are valid = C [OK]
      Hint: Multiple middleware calls stack; except() accepts multiple args [OK]
      Common Mistakes:
      • Thinking multiple middleware calls override each other
      • Assuming except() needs array only
      • Believing syntax causes error
      5. You want to apply the 'verified' middleware to all controller methods except 'index' and 'show', and also apply 'log' middleware only to 'store' and 'update'. Which constructor code correctly implements this using arrays?
      hard
      A. public function __construct() { $this->middleware('verified')->only('index', 'show'); $this->middleware('log')->except('store', 'update'); }
      B. public function __construct() { $this->middleware('verified')->except(['index', 'show']); $this->middleware('log')->only(['store', 'update']); }
      C. public function __construct() { $this->middleware('verified'); $this->middleware('log'); }
      D. public function __construct() { $this->middleware('verified')->except('index', 'show'); $this->middleware('log')->only('store', 'update'); }

      Solution

      1. Step 1: Apply 'verified' middleware except on 'index' and 'show'

        Use except() with array to exclude 'index' and 'show' from 'verified' middleware.
      2. Step 2: Apply 'log' middleware only on 'store' and 'update'

        Use only() with array to limit 'log' middleware to 'store' and 'update' methods.
      3. Step 3: Compare options

        public function __construct() { $this->middleware('verified')->except('index', 'show'); $this->middleware('log')->only('store', 'update'); } uses except() and only() with multiple string arguments (valid but less common). public function __construct() { $this->middleware('verified')->except(['index', 'show']); $this->middleware('log')->only(['store', 'update']); } uses arrays which is clearer and recommended. Options B and C do not match requirements.
      4. Final Answer:

        public function __construct() { $this->middleware('verified')->except(['index', 'show']); $this->middleware('log')->only(['store', 'update']); } -> Option B
      5. Quick Check:

        Use except() and only() with arrays for clarity = A [OK]
      Hint: Use except() and only() with arrays for multiple methods [OK]
      Common Mistakes:
      • Mixing only() and except() incorrectly
      • Not using arrays for multiple methods
      • Applying middleware to wrong methods
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard