آموزش middleware در لاراول (به زبان ساده)
middleware لاراول مکانیزمی است که گردش کار بین درخواست و پاسخ را کنترل می کند. وقتی درخواستی ارسال می شود، middleware آن را شناسایی و پردازش می کند. با توجه به نتیجه پاسخ مناسبی به درخواست ارائه می دهد.
به عنوان مثال هنگامی که کاربر درخواست بارگذاری تصویر را ارسال می کند، یک middleware بررسی می کند که آیا کاربر احراز هویت شده است یا خیر. اگر کاربر احراز هویت شده باشد، middleware تصاویر را بارگذاری می کند در غیر این صورت کاربر را به صفحه ورود هدایت می کند.
ایجاد و تعریف Middleware
طبق معمول در لاراول، می توانید با اجرای دستور زیر، middleware ایجاد کنید
php artisan make:middleware<middleware_name>
در دستور بالا باید middleware-name را با نامی که می خواهید بر روی middleware خود بگذارید جایگزین کنید.
به عنوان مثال برای ایجاد middleware که نام آن AgeMiddleware است، باید دستور زیر را اجرا کنید
php artisan make:middleware AgeMiddleware
middleware ایجاد شده را می توانید در دایرکتوری app/Http/Middleware مشاهده کنید.
ثبت Middleware
برای استفاده موثر از middleware ها، باید آن ها را در laravel ثبت کنید.
دو نوع middleware در لاراول وجود دارد،
1. Global Middleware
2. Route Middleware
1-Global Middleware
همانطور که از نامش پیداست، Global Middleware در طول هر درخواست HTTP ، کل برنامه لاراول اجرا می شود.
Global Middleware زمانی مفید است که در هر درخواست HTTP شرایط خاصی مانند شرایط احراز هویت را بررسی کنید.
یک برنامه وب حرفه ای باید اصالت کاربر را در طول هر فعالیت برای اهداف امنیتی بررسی کند.
در اینجا Global Middleware به ما کمک می کند تا وظایف خود را انجام دهیم. می توانیم Middleware را در فایل “app/Http/Kernel.php” ثبت کنیم.
این فایل شامل دو ویژگی middleware$ و routeMiddleware$ است. Global Middleware در آرایه middleware$ ثبت شده است.
از ویژگی routeMiddleware$ برای ثبت Middleware های خاص مسیر استفاده می شود.
طبق خطوط زیر می توانید Global Middleware را تعریف کنید:
protected $middleware = [
IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
];
2-Route Middleware
ما می توانیم route middleware را به هر مسیر خاصی اختصاص دهیم.
شما باید middleware را با یک کلید به فایل /app/Http/Kernel.php خود اضافه کنید. به چنین middleware هایی route middleware گفته می شود.
با قطعه کد زیر می توانید route middleware را به همراه کلید آن ثبت کرده یا بنویسید:
protected $routeMiddleware = [
‘auth’ => AppHttpMiddlewareAuthenticate::class,
‘auth.basic’ => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
‘guest’ => AppHttpMiddlewareRedirectIfAuthenticated::class,
‘userUploadImage’ => IlluminateRoutingMiddlewareuserUploadImage::class,
];
در کد بالا، route middleware را با کلیدی مانند “userUploadImage” اضافه کرده ایم.
Middleware با پارامترها
می توانیم پارامترها را به همراه middleware تعریف کنیم.
به عنوان مثال اگر برنامه شما دارای نقش های متفاوتی مانند کاربر، ادمین، سوپر ادمین و غیره باشد و بخواهید عمل را بر اساس نقش، احراز هویت کنید این امر با ارسال پارامترها با middleware به دست می آید. middleware ایجاد شده شامل تابع زیر است و می توانیم آرگومان سفارشی خود را بعد از آرگومان next$ منتقل کنیم.
public function handle($request, Closure $next) {
return $next($request);
}
Terminable Middleware
این ها انواع خاصی از middleware ها هستند که بلافاصله پس از ارسال هرگونه پاسخی به مرورگر شروع به کار می کنند. متد terminate برای دستیابی به این هدف استفاده می شود. وقتی از یک متد terminate در middleware پروژه شما استفاده می شود، پس از ارسال پاسخ مرورگر، به طور خودکار فراخوانی می شود.
<?php
namespace IlluminateSessionMiddleware;
use Closure;
class SessionBegin
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
// thing to do while terminating the middleware
}
}
حتما دانلود کنید: آموزش صفر تا صد لاراول (رایگان)