Middleware در Laravel 11

laravel 11 middleware
22 اردیبهشت 1404

معرفی 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);
اگر کاربر شرایط لازم را داشته باشد، این خط به درخواست اجازه می‌دهد که به کنترلر مربوطه برود و پردازش شود.

سوالات متداول

؟

Middleware در Laravel به چه دردی می‌خورد؟

؟

چطور می‌توانم Middleware ایجاد کنم؟

؟

آیا می‌توانم چندین Middleware را همزمان استفاده کنم؟