Выполнять код на каждой или указанной страницы (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'); } }
Поддержать автора