Middleware (میدل ویر) در لاراول چیست؟

Middleware (میدل ویر) در لاراول چیست؟

 

middleware (میدل ویر) یک مکانیزم مناسب برای فیلتر کردن درخواست های HTTP که وارد برنامه شما می شوند فراهم می کند. این همان تعریف معنی middleware می باشد برای مثال لاراول دارای یک middleware با عنوان verifies دارد که اعتبار کاربر برنامه شما تایید می کند و در صورت عدم احراز هویت، کاربر توسط این middleware به صفحه ورود (login) هدایت می شود و در صورت تایید نیز به شما اجازه ادامه کار در محیط برنامه داده می شود.

در لاراول middleware هایی علاوه بر تایید اعتبار می توان اضافه کرد یک middleware core (میدل ویر اصلی) ممکن است مسئول اضافه کردن انواع هدر های لازم در برنامه برای ترک یا افزوده شدن کاربر باشد همچنین یک middleware logging ممکن است درخواست هایی (request) در هنگام ورود کاربر به برنامه به هدر ها اضافه کند.

فریم ورک لاراول دارای چند نوع مختلف middleware از جمله authentication و CSRF هستش همه این middleware ها در مسیر app/Http/Middleware ذخیره و در فایلkernel.php  تعریف شده اند. درواقع میدل ویر ها یک واسط هستند که می توانند در بخش های مختلف برنامه برای اهداف مختلف مثل ثبت ویو محصولات، احراز هویت کاربران و … مورد استفاده قرار گیرند یک مثال جالب مثل اجبار کاربر برای انجام یک کار مثل لاگین یا تکمیل اطلاعات پروفایل، که تا وقتی پروفایل خود را کامل نکرده باشد با استفاده از middleware تعریف شده ما، به صفحه مورد نظر برگشت داده شود.

تعريف middleware یا ساخت middleware در لاراول

تعريف middleware یا ساخت یک میدل ویر جدید با دستور make:middleware در Artisan command انجام می شود در مثال ذیل ChekAdmin نام میدل وير تعریفی می باشد و بسته به کاربردش می تواند نام های متفاوتی داشته باشد.

php artisan make:middleware ChekAdmin

این دستور یک middleware با نام ChekAdmin در مسیر app/Http/Middleware ایجاد می کند و بنا به کد ذیل وقتی کاربر بخواهد به صفحه مدیریت سایت دست رسی داشته باشد چک میشود در صورتی که نقش کاربر لاگین شده Admin باشد اجازه به او داده می شود در غیر این صورت به صفحه خانه برگردانده می شود.

namespace App\Http\Middleware;

 use Closure;

 class ChekAdmin

{

public function handle($request, Closure $next)

}

              if(auth()->user()->isAdmin())

       ;return $next($request)

;return redirect(‘home’)->with(‘error’,’You have not admin access’)

{

باید کلاس ChekAdmin را در فایل kernel.php و در قسمت routeMiddleware اضافه کنیم. عنوان ChekAdmin را می توان به مسیر مورد نظر اعمال کرد

protected $routeMiddleware = [

‘ChekAdmin’ => \App\Http\Middleware\ChekAdmin::class,

];

نحوه اعمال middleware به یک مسیر

 

Route::get(‘User/panel’,’UserController@show’)->middleware(‘ChekAdmin’);