Laravel – Middleware

Laravel – Middleware

От автора: как следует из названия, Laravel Middleware (посредник) выполняет функцию промежуточного звена между запросом и ответом. Это тип механизма фильтрации. Например, Laravel включает Middleware, которое проверяет подлинность пользователя приложения. Если пользователь аутентифицирован, он будет перенаправлен на главную страницу, в противном случае он будет перенаправлен на страницу входа в систему.

Средство промежуточного уровня можно создать, выполнив следующую команду:

php artisan make:middleware <middleware-name>

Замените <middleware-name> на имя вашего Middleware. Средство, которое вы создаете, можно будет создано в папке app/Http/Middleware.

Шаг 1 — Создайте Middleware AgeMiddleware. Для этого нам нужно выполнить следующую команду:

php artisan make:middleware AgeMiddleware

Шаг 2 — После успешного выполнения команды вы получите следующий результат:

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

Laravel – Middleware

Шаг 3 — AgeMiddleware будет создано в папке app/Http/Middleware. Вновь созданный файл будет уже содержать следующий код.

<?php
namespace App\Http\Middleware;
use Closure;
 
class AgeMiddleware {
  public function handle($request, Closure $next) {
 return $next($request);
  }
}

Регистрация Middleware

Перед использованием мы должны зарегистрировать каждое Middleware. В Laravel существует два типа Middleware.

Глобальное Middleware

Middleware маршрута

Глобальное Middleware обрабатывает все HTTP запросы приложения, в то время как Middleware маршрута обрабатывает определенные маршруты. Middleware можно зарегистрировать в файле app/Http/Kernel.php. Этот файл содержит два свойства $middleware и $routeMiddleware. $middleware используется для регистрации глобального Middleware, а свойство $routeMiddleware — для регистрации Middleware для конкретного маршрута. Чтобы зарегистрировать глобальное Middleware, укажите классы в конце свойства $middleware.

protected $middleware = [
  \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
  \App\Http\Middleware\EncryptCookies::class,
  \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
  \Illuminate\Session\Middleware\StartSession::class,
  \Illuminate\View\Middleware\ShareErrorsFromSession::class,
  \App\Http\Middleware\VerifyCsrfToken::class,
];

Чтобы зарегистрировать Middleware для конкретного маршрута, добавьте ключ и значение в свойство $routeMiddleware.

protected $routeMiddleware = [
  'auth' => \App\Http\Middleware\Authenticate::class,
  'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
  'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];

В предыдущем примере мы создали AgeMiddleware . Теперь мы можем зарегистрировать его в свойствах Middleware для конкретного маршрута. Код, который используется для этого, приведен ниже. app/Http/Kernel.php

<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
 
class Kernel extends HttpKernel {
  protected $middleware = [
 \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
 \App\Http\Middleware\EncryptCookies::class,
 \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
 \Illuminate\Session\Middleware\StartSession::class,
 \Illuminate\View\Middleware\ShareErrorsFromSession::class,
 \App\Http\Middleware\VerifyCsrfToken::class,
  ];
 
  protected $routeMiddleware = [
 'auth' => \App\Http\Middleware\Authenticate::class,
 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
 'Age' => \App\Http\Middleware\AgeMiddleware::class,
  ];
}

Параметры Middleware

С помощью Middleware мы также можем передавать параметры. Например, если ваше приложение поддерживает разные роли, такие как user, admin, super admin и т. д., и вы хотите аутентифицировать действия на основе роли, это можно сделать с помощью передачи параметров через Middleware. Средство, которое мы создаем, содержит следующую функцию, и мы можем передать наш собственный аргумент после аргумента $next.

public function handle($request, Closure $next) {
  return $next($request);
}

Шаг 1 – Создайте Middleware RoleMiddleware, выполнив следующую команду:

php artisan make:middleware RoleMiddleware

Шаг 2 — После успешного выполнения вы получите следующий результат:

Laravel – Middleware

Шаг 3 — Добавьте следующий код в метод обработки созданного RoleMiddlewareat в файле app/Http/Middleware/RoleMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;
 
class RoleMiddleware {
  public function handle($request, Closure $next, $role) {
 echo "Role: ".$role;
 return $next($request);
  }
}

Шаг 4 — Зарегистрируйте RoleMiddleware в файле app\Http\Kernel.php. Добавьте в этот файл строку, выделенную серым цветом, чтобы зарегистрировать RoleMiddleware.

Laravel – Middleware

Шаг 5 — Выполните следующую команду для создания Middleware TestController:

php artisan make:controller TestController --plain

Шаг 6 — После успешного выполнения команды вы получите следующий результат:

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

Laravel – Middleware

Шаг 7. Скопируйте следующий код в файл app/Http/TestController.php.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class TestController extends Controller {
  public function index(){
 echo "<br>Test Controller.";
  }
}

Шаг 8 — Добавьте следующую строку кода в файл app/Http/routes.php.

Route::get('role',[
  'middleware' => 'Role:editor',
  'uses' => 'TestController@index',
]);

Шаг 9 – Перейдите по следующему URL-адресу, чтобы проверить Middleware с параметрами http://localhost:8000/role. Шаг 10 – В результате вы должны получить следующее.

Laravel – Middleware

Middleware с методом «terminate»

Terminate Middleware выполняет определенную задачу после отправки ответа в браузер. Это можно сделать с помощью создания Middleware с методом «terminate». Терминальное Middleware должно быть зарегистрировано как глобальное. Метод terminate принимает два аргумента $request и $response. Метод terminate можно создать с помощью следующего кода.

Шаг 1 – Создайте Middleware TerminateMiddleware, выполнив следующую команду.

php artisan make:middleware TerminateMiddleware

Шаг 2 – Этот код дает следующий результат:

Laravel – Middleware

Шаг 3 — Скопируйте следующий код во вновь созданное Middleware TerminateMiddleware в app/Http/Middleware/TerminateMiddleware.php.

<?php
namespace App\Http\Middleware;
use Closure;
 
class TerminateMiddleware {
  public function handle($request, Closure $next) {
 echo "Executing statements of handle method of TerminateMiddleware.";
 return $next($request);
  }
 
  public function terminate($request, $response){
 echo "<br>Executing statements of terminate method of TerminateMiddleware.";
  }
}

Шаг 4 — Зарегистрируйте TerminateMiddleware в файле app\Http\Kernel.php. Добавьте в этом файле строку, выделенную серым цветом, чтобы зарегистрировать TerminateMiddleware.

Laravel – Middleware

Шаг 5 — Выполните следующую команду для создания ABCController.

php artisan make:controller ABCController --plain

Шаг 6 — После успешного выполнения URL-адреса вы получите следующий результат:

Laravel – Middleware

Шаг 7. Скопируйте следующий код в файл app/Http/ABCController.php.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class ABCController extends Controller {
  public function index(){
 echo "<br>ABC Controller.";
  }
}

Шаг 8 — Добавьте следующую строку кода в файл app/Http/routes.php.

Route::get('terminate',[
  'middleware' => 'terminate',
  'uses' => 'ABCController@index',
]);

Шаг 9 – Перейдите по следующему URL-адресу, чтобы проверить Terminable Middleware. http://localhost:8000/terminate

Шаг 10 – В результате вы получим следующий результат:

Laravel – Middleware

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Научиться

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree