Выполнять код на каждой или указанной страницы (middleware)

Выполнять код на каждой или указанной странице (например провека токена) можно через middleware.

Сначала надо создать middleware:

php artisan make:middleware VerifyToken

В результате будет создан файл app/Http/Middleware/VerifyToken.php.

# app/Http/Middleware/VerifyToken.php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class VerifyToken
{
  public function handle(Request $request, Closure $next): Response
  {
    // код, который будет выполняться на каждой странице
    return $next($request);
  }
}

Чтобы код (middleware) выполнялся на каждой странице, надо добавить только что созданный middleware в app/Http/Kernel.php.

# app/Http/Kernel.php

protected $middleware = [
  // ...
  \App\Http\Middleware\VerifyToken::class  
];

Выполнять код (middleware) только в web.php или api.php

Выполнять middleware только в web.php или api.php можно через свойство $middlewareGroups.

# app/Http/Kernel.php

// Выполнять middleware только в api.php
protected $middlewareGroups = [
  'web' => [
    // ...
  ],
  'api' => [
    // ...
    \App\Http\Middleware\VerifyToken::class
  ],
];

Выполнять код (middleware) на указанных страницах

Сначала надо создать алиас в app/Http/Kernel.php.

# app/Http/Kernel.php

protected $middlewareAliases = [
  // ...
  'token' => \App\Http\Middleware\VerifyToken::class,
];

Теперь данный алиас можно указывать на любом роутере.

# routes/web.php

Route::get('personal/', [UserController::class, 'personal'])->middleware('token');

Выполнять middleware в контроллере

Можно указать в контроллере, какой middleware выполнять:

# app/Http/Controllers/UserController.php

class UserController extends Controller
{
  public function __construct()
  {
    // Выполнять middleware во всех экшенов
    $this->middleware('auth');

    // Выполнять middleware только в экшене index
    $this->middleware('log')->only('index');

    // Выполнять middleware во всех экшенах, кроме store
    $this->middleware('subscribed')->except('store');
  }
}