معرفی Middleware در Laravel
سلام رفقا! امروز میخواهیم درباره Middleware در Laravel 11 صحبت کنیم. وقتی که از Middleware صحبت میکنیم، در واقع داریم درباره یک لایهای صحبت میکنیم که قبل یا بعد از اینکه درخواست به کنترلر برسد، میتواند مدیریت شود. این یعنی که میتوانیم پیش از رسیدن به هر کنترلر، یا پس از انجام یک عملیات به صورت خاصی رفتار کنیم.
به عبارت دیگه، Middleware برای مدیریت درخواستها بسیار کاربردی هستش. مثلاً میتوانیم از Middleware استفاده کنیم تا بررسی کنیم که کاربر وارد شده یا نه، یا اینکه آیا کاربر مجوز دسترسی به صفحه خاصی رو داره یا نه. این باعث میشه که امنیت اپلیکیشن ما به شدت بالا بره.
همچنین، Middleware میتواند برای اهداف دیگری مثل ثبت لاگ، یا حتی زمانبندی درخواستها استفاده بشه. در Laravel، بهطور پیشفرض چند Middleware داریم مثل auth
، guest
و verified
که برای مدیریت وضعیت کاربران به کار میبرند.
پس بیایید نگاهی به نحوه ایجاد یک Middleware جدید در Laravel و همچنین چگونگی استفاده از آن بیندازیم. این کار خیلی ساده است و میتونیم با چند خط کد این کار رو انجام بدیم.
ایجاد Middleware جدید
برای ایجاد یک Middleware جدید ابتدا از خط فرمان به مسیر پروژه خود بروید و سپس از دستور زیر استفاده کنید:
php artisan make:middleware CheckAge
این دستور یک فایل جدید به نام CheckAge.php
در پوشه app/Http/Middleware
ایجاد میکند. حالا بیایید به این فایل نگاه کنیم.
کد Middleware
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param int $age
* @return mixed
*/
public function handle($request, Closure $next, $age)
{
if (Auth::check() && Auth::user()->age < $age) {
return redirect('home');
}
return $next($request);
}
}
توضیح کد Middleware
کد 1:
namespace App\Http\Middleware;
این خط مشخص میکند که کد ما در کجا قرار دارد. ما در حال کار با فضای نام Middleware در Laravel هستیم.
کد 2:
use Closure;
در اینجا ما از کلاس
Closure
استفاده میکنیم تا بتوانیم درخواستها را مدیریت کنیم.کد 3:
public function handle($request, Closure $next, $age)
این تابع مدیریت درخواست را انجام میدهد. اگر سن کاربر از مقدار مشخص شده کمتر باشد، او را به صفحه
home
هدایت میکند.کد 4:
return $next($request);
اگر کاربر شرایط لازم را داشته باشد، این خط به درخواست اجازه میدهد که به کنترلر مربوطه برود و پردازش شود.