آشنایی با middleware ها در لاراول

آشنایی با middleware ها در لاراول
آکادمی آی تی
آکادمی آی تی
dots

آشنایی با middleware ها در لاراول

زمان مورد نیاز برای مطالعه 5 دقیقه

آشنایی با میدلورها در لاراول 

دپارتمان ‌ها: آموزش برنامه نویسی
1399/02/19
7,410 بازدید

لاراول یکی از فریمورک های محبوب برای برنامه نویسان زبان برنامه نویسی php است. این فریمورک به پروژه سرعت و امنیت می بخشد. از اصلی ترین و مهم ترین نیاز هر اپلیکشن فیلتر کردن درخواست های http است که از سمت کاربر وارد می شوند. هر برنامه نویسی باید با این عملکرد آشنا باشد و آن را به طور کامل و صحیح پیاده سازی کند. این عمل را درلاراول، middleware ها انجام می دهند. برای آشنایی با میدلورها در لاراول تا انتهای این مقاله همراه ما باشید.

 

Middleware چیست؟

میدلور یکی از اجزای فریمورک لاراول است که مکانیزمی را برای درخواست های http، که از کاربر گرفته شده است اجرا می کند. در مثال لاگین برای کاربران یا ادمین سایت، میدلورها کنترل کامل را در احرازهویت برای برقراری امنیت سایت انجام می دهند. میدلور را در واقع می توان یک رابط تعریف کرد که هماهنگی بین درخواست و پاسخ به آن ها را انجام می دهد. با قطعه کد زیر شما می توانید یک middleware با نام دلخواه بسازید.

php artisan make:middleware academy_it

در این جا یک میدلور با نام academy_ it ساخته شد. شما می توانید هر دستوری را که برای اپلیکیشن خود نیاز دارید را پیاده سازی کنید. میدلور های ساخته شده در فایل kernel.php قرار دارند. 

 

عملکرد middleware ها چگونه است؟

اگر اپلیکشن را به هسته ی کره ی زمین تشبیه کنیم، برای دسترسی به آن باید از تمامی پوسته های زمین عبور کرده تا به آن برسیم. در این مثال پوسته نقش middleware را دارد. هر میدلور به میدلور بعدی اجازه ی دسترسی یا deny را صادر می کند. این کار تا زمانی که به برنامه دسترسی داشته باشیم ادامه می یابد، یعنی باید از تمامی میدلور ها دسترسی بگیریم.

هر میدلور یک فانکشن خیلی مهم به نام handle دارد که همان پوسته است. پوسته ای که یک سری بررسی را انجام می دهد و این درخواست به پوسته ی بعدی فرستاده می شود. چندین نوع میدلور در فریمورک لاراول وجود دارند که برای احراز هویت و جلوگیری از حملات csrf ساخته شده اند. Csrf کوتاه شده ی عبارت cross site request forgery است. چهار میدلور از پیش ساخته شده در پروژه وجود دارند که به صورت زیرهستند. 

  • Authenticate.php
  • EncriptCookies.php 
  • RedirectIfAuthenticadet.php
  • VerifyCsrfToken.php

تمامی این میدلور ها در مسیر app/http/middleware در پوشه ی middleware وجود دارند.

 

دوره مرتبط: کامل ترین پکیج آموزش Laravel 8 ✅ + آموزش لاراول پروژه محور

 

انواع میدلورها در لاراول 

1. global middleware یا همان میدلور سراسری

 به قطعه کد زیر دقت کنید:

Protected; $middleware = [
\Illuminate\Foundation\http\Middleware\CheckForMaintenanceMode::class,
];

2. group middleware یا همان میدلور های گروهی

 این نوع میدلورها خود به دو دسته تقسیم می شوند. میدلور های web و api، میدلور های گروهی وب چندین کار برای برنامه انجام می دهند. که هر کدام کلاس مخصوص به خود را برای این کار دارند.

  1. کوکی ها را در کلاس encryptcookies انکریپت می کند.
  2. سشن هایی را در کلاس startsession استارت می زنند.
  3. وریبل های ارور را در کلاس shareerrorsformsession فعال می کنند.
  4. token برای csrf می سازند که با تابع csrf_token() در کلاس verifycsrftoken این token ساخته می شود.

 

برای درک هر یک از وظایف میدلور ها به کد زیر دقت کنید، این کد ها در فایل kernel.php قرار دارند.

protected $middlewareGroups=[
web =>]
\ app \http \ middleware \ EncryptCookies::class,
\ Illuminate \ Cookie\ middleware \ addcookiestoresponse::class,
\ Illuminate \ session\ middleware \ startsession::class,
\ Illuminate\ view \ middleware \ shareerrorsformsession::class
\ app\ http \ middleware \ verifycsrftoken::class,
],
api =>[
throttle::60,1,
],
];

route middleware یا همان میدلور های مسیر

 این نوع میدلوربرای اپلای کردن مسیر ها که در میدلور گروهی وب مسیر یابی شده اند ساخته شده است.

 

کاربران عزیز آکادمی آی تی دراین مقاله به طور کامل به مبحث میدلور ها در آموزش لاراول8 پرداخته شد. همچنین قطعه کد هایی برای آموزش middleware آورده شد که امیدواریم به  جواب تمامی سوالاتتان رسیده باشید.