Мы используем промежуточное ПО в Laravel, чтобы убедиться, что аутентифицированный пользователь может получить доступ к приложению. Middleware работает как охранник, который помогает идентифицировать пользователя. Мы можем создать несколько промежуточных программ, которые могут быть назначены различным маршрутам. Мы также можем использовать промежуточное ПО по умолчанию на каждом маршруте, для этого нам нужно зарегистрировать промежуточное ПО в app/Http/Kernel.php
In $middleware
свойство.
- Что такое промежуточное ПО
- Как создать промежуточное ПО
- Типы промежуточного программного обеспечения в Laravel
- Глобальное промежуточное ПО
- Как определить глобальное промежуточное ПО
- Маршрутное промежуточное ПО
- Как определить Route Middleware
- Как использовать промежуточное ПО в файле маршрута
- Групповое промежуточное ПО в Laravel
- Как зарегистрировать Group Middleware
- Как использовать групповое промежуточное ПО в Route web.php
- Заключение
Что такое промежуточное ПО
В Laravel есть опция Midlleware, которая помогает нам защитить наше приложение или маршруты. Если я объясню, как я ее использовал, то она помогает аутентифицировать пользователя и подтвердить запрос от пользователя. Что означает «подтвердить запрос от пользователя»? Например, если вы пытаетесь войти в любое приложение laravel или пытаетесь включить любой URL, middleware проверяет, есть у вас разрешение на маршрут или нет.
Если нет, то оно возвращает запрос обратно на страницу входа или главную страницу. Таким образом, это своего рода телохранитель, который защищает приложение от несанкционированных запросов.
Как создать промежуточное ПО
создание промежуточного ПО
Создать промежуточное ПО не так уж сложно, достаточно ввести строку Artisan Command, которая поможет вам создать новое ПО.
php artisan make:middleware PostManager
Когда вы выполните эту команду, в вашей директории в app/Http/Middleware/PostManager.php
будет находиться это промежуточное ПО.
use Closure;
use IlluminateHttpRequest;
class PostManager
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure(IlluminateHttpRequest): (IlluminateHttpResponse|IlluminateHttpRedirectResponse) $next
* @return IlluminateHttpResponse|IlluminateHttpRedirectResponse
*/
public function handle(Request $request, Closure $next)
{
return $next($request);
}
}
Вы можете написать в этом промежуточном ПО все, что захотите. Позвольте мне дать вам подсказку. Например, мы создаем промежуточное ПО, которое может проверять, является ли пользователь, делающий запрос, менеджером или нет. Затем мы сделаем следующее:
<?php
namespace AppHttpMiddleware;
use AppProvidersRouteServiceProvider;
use Closure;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
class PostManager
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure(IlluminateHttpRequest): (IlluminateHttpResponse|IlluminateHttpRedirectResponse) $next
* @return IlluminateHttpResponse|IlluminateHttpRedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$user = Auth::user();
if ($user->usertype == 1) {
return redirect(RouteServiceProvider::HOME);
}else{
return route()->redirect('login');
}
return $next($request);
}
}
Мы проверим, имеет ли пользователь usertype=1
или нет, если да, то вернем его в dashboard
. В противном случае перенаправим на страницу входа.
Типы промежуточного программного обеспечения в Laravel
Laravel включает в себя промежуточное ПО, и существует два типа промежуточного ПО.
- Глобальное промежуточное ПО.
- Route Middleware
Глобальное промежуточное ПО
Прежде чем двигаться дальше, давайте поговорим о глобальном Middleware. Когда вы создаете какой-либо маршрут или делаете какой-либо запрос, вы можете назначить промежуточное ПО индивидуально для определенной причины. Но если вы хотите иметь промежуточное ПО, которое может проверять все запросы как глобальное промежуточное ПО. Тогда вы можете использовать глобальное промежуточное ПО.
Как определить глобальное промежуточное ПО
Давайте определим промежуточное ПО, для этого вам нужно перейти в структуру каталога app/Http/Kernel.php
, в котором у вас будет два свойства. $middleware
$routeMiddleware
. В $middleware вы можете зарегистрировать созданное вами промежуточное ПО, и оно будет работать со всеми запросами, сделанными вами.
protected $middleware = [
// AppHttpMiddlewareTrustHosts::class,
AppHttpMiddlewareTrustProxies::class,
FruitcakeCorsHandleCors::class,
AppHttpMiddlewarePreventRequestsDuringMaintenance::class,
IlluminateFoundationHttpMiddlewareValidatePostSize::class,
AppHttpMiddlewareTrimStrings::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
];
Маршрутное промежуточное ПО
Маршрутное промежуточное ПО немного отличается от глобального промежуточного ПО, разница в том, что маршрутное промежуточное ПО работает на определенных маршрутах, на которые оно назначено. С другой стороны, глобальное промежуточное ПО работает глобально. Итак, в основном Route Middleware используется в маршрутах для проверки того, имеет ли пользователь разрешение или нет на доступ к определенному URL. Давайте посмотрим, как его определить.
Как определить Route Middleware
Определить Route Middleware очень просто. Вам нужно перейти в раздел app/Http/Kernel.php
и в нем у вас будет $routeMiddleware
свойство. Вы можете добавить в это свойство созданное вами промежуточное ПО и назначить ключ добавленному классу.
protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
'can' => IlluminateAuthMiddlewareAuthorize::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
'postmanager' => IlluminateAuthMiddlewarePostManager::class,
];
Как использовать промежуточное ПО в файле маршрута
Вы можете легко использовать промежуточное ПО в файле Route, то есть в файле routes/web.php
. Давайте посмотрим, как мы можем использовать промежуточное ПО в маршруте.
//for example we have route managerslist and will implement middleware on it.
use AppHttpMiddlewarePostManager;
Route::view('/managers','managers')->middleware('postmanager');
Если вы работаете над большим или средним проектом, то вам следует обратить внимание на следующее $middlewareGroups
тогда вам не нужно будет назначать промежуточное ПО индивидуально для каждого маршрута. Давайте посмотрим на групповое промежуточное ПО.
Групповое промежуточное ПО в Laravel
Как я уже говорил выше, если вы назначаете промежуточное ПО каждому маршруту, то это не самый лучший способ сделать это. Если у вас несколько маршрутов на одном middleware, то вам следует использовать групповое Middleware, которое поможет вам сделать это очень удобным способом.
Как зарегистрировать Group Middleware
Сначала вам нужно снова зайти в app/Http/Kernel.php, где у вас будет свойство $middlewareGroups, на котором вы можете зарегистрировать групповое промежуточное ПО.
Как использовать групповое промежуточное ПО в Route web.php
Route::middleware(['PostManager'])->group(function () {
// your stuff
});
Заключение
Это основные моменты Middleware в Laravel. Надеюсь, вы их поняли. Если вы используете промежуточное ПО для аутентификации вашего приложения, я думаю, вам стоит его использовать. Не знаю, как другие, но я использую их с пакетом «Laravel Permission», который очень удобен, когда дело доходит до аутентификации и использования Middlewares.
Сообщение Как использовать Middleware в Laravel появились сначала на larachamp.com.
The post Как использовать Middleware в Laravel appeared first on larachamp.com.