برنامه نویسی با محبوب ترین فریم ورک پی اچ پی #3

برنامه نویسی با محبوب ترین فریم ورک پی اچ پی #3
تاکنون با ساختار لاراول آشناشدیم ، محل قرارگیری فایل های مربوط به تنظیمات برنامه و همچنین کار با اونها رو یادگرفتیم، مسیریابی در لاراول رو بررسی کردیم و از ساختار بسیار ساده روتینگ برای دریافت درخواست های url و اتخاذ تصمیم مناسب استفاده کردیم.
در این بخش قصد داریم با middleware  یکی دیگه از اجزای اساسی لاراول که وظیفه اون  فیلتر کردن درخواستهای ورودی به برنامه هست آشنا بشیم و با مثالهای کاربردی اون رو بررسی کنیم . پس با ما همراه باشید.
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
جای بروشور دیواری
خرید جای بروشور دیواری و رومیزی
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
تعمیر لوازم خانگی
تعمیر جاروبرقی، مایکروفر، بخارشوی، ظرفشویی، لباسشویی، سولاردام، کولرگازی
خودتان را اینجا معرفی کنید

Middleware

Middleware یک مکانیسم ساده جهت فیلتر کردن درخواست های ورودی به برنامتون هست.
به طور مثال لاراول یک Middleware با نام auth  داره که وظیفه اون احراز هویت کاربران هست. در صورتی که هویت کاربران مشخص شده و لاگین شده باشند، اجازه پیش روی در برنامه و درخواست جدید را صادر و غیراینصورت برنامه به صفحه لاگین هدایت می شود.

تعریف Middleware

برای تعریف Middleware در لاراول کافیست که از طریق ترمینال خود به دایرکتوری برنامه خود رفته و سپس با وارد کردن دستور زیر  یک Middleware ایجاد نمائیم.
 
php artisan make:middleware LaravelMiddleware

با اجرای دستور فوق یک کلاس با نام LaravelMiddleware در دایرکتوری app/Http/Middleware ایجاد خواهدشد.
توجه!!. کلیه شروط مربوط به فیلتر کردن درخواست ها در متد handle  نوشته می شود.
به کد ذیر توجه کنید:

namespace AppHttpMiddleware;
 
use Closure;
 
class OldMiddleware
{
    /**
     * Run the request filter.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->input('age') <= 20) {
            return redirect('home');
        }
 
        return $next($request);
    }
 
}

در مثال فوق ما یک Middleware با نام OldMiddleware ایجاد کردیم  با قراردادن شرط سنی بالای  20 سال، اجازه ادامه فعالیت در برنامه داده می شود و در غیر اینصورت برنامه کاربر را به صفحه home هدایت می کند.
 

Before / After Middleware

باتوجه به ساختار Middleware امکان اجرای آن قبل و یا بعد از دریافت درخواستها فراهم شده است.به طور مثال در کلاس زیر دستورات قبل از درخواست اجرا میشود:

namespace AppHttpMiddleware;
 
use Closure;
 
class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
        // Perform action
 
        return $next($request);
    }
}
 و یا بعد از درخواست اجرا می شوند:
namespace AppHttpMiddleware;
 
use Closure;
 
class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);
 
        // Perform action
 
        return $response;
    }
}
 

پارامترهای Middleware

Middleware ها می توانند پارامترهای مختلفی رو به عنوان ورودی دریافت کنند:
به طور مثال اگر در برنامه نیاز به بررسی نقش کاربران در سیستم دارید می توانید از نمونه کد زیر استفاده کنید:


namespace AppHttpMiddleware;
 
use Closure;
 
class RoleMiddleware
{
    /**
     * Run the request filter.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @param  string  $role
     * @return mixed
     */
    public function handle($request, Closure $next, $role)
    {
        if (! $request->user()->hasRole($role)) {
            // Redirect...
        }
 
        return $next($request);
    }
 
}

در متد handle ابتدا نقش کاربران مورد بررسی قرار گرفته و درصورت صحت درخواست اجرا خواهد شد.
برای استفاده از پارامترها می تونید اونها رو بعد از آرگومان $next به عنوان ورودی متد handle مورد استفاده قرار بدید.
 

ثبت نام Middleware  ها

درصورت استفاده از یک middleware در کل برنامه کافیست فایل kernel  رو از دایرکتوری app/Http/Kernel.php بازکرده و middleware مربوطه را در آرایه $middleware ثبت کنید.
همچنین در صورت استفاده در مسیردهی (routing) می بایست پس از انتخاب یک نام کلیدی مناسب و ثبت آن در آرایه routeMiddleware از آن استفاده کرد.
به این مثال توجه کنید:
// Within AppHttpKernel Class...
 
protected $routeMiddleware = [
    'auth' => AppHttpMiddlewareAuthenticate::class,
    'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
    'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
];

 middleware های auth و یا guest برای استفاده در روتینگ و یا همان مسیریابی مورد استفاده قرار می گیرند.

استفاده از middleware ها در مسیریابی:

برای استفاده از middleware در مسیریابی از نام آن در مسیریابی استفاده می شود به کد زیر توجه کنید:
 
Route::get('admin/profile', ['middleware' => 'auth', function () {
    //
}]);

همانطور که از کد بالا مشخص است برنامه پس دریافت درخواست admin/profile از url نسبت به بررسی شروطی که در متدhandle  از middleware ثبت شده در فایل kernel با عنوان auth می پردازد و باتوجه به آن نسبت به اتخاذ تصمیم مناسب اقدام می کند.

استفاد از چندین middleware در یک مسیردهی

Route::get('/', ['middleware' => ['first', 'second'], function () {
    //
}]);

در آموزش های بعدی با ما همراه باشید.
 


 

محمد دارای مدرک کارشناسی نرم افزار است و به عنوان توسعه‌دهنده نرم‌افزار وب و طراح رابط کاربری در دپارتمان تکنولوژی اطلاعات سازمان خدمات پس از فروش سایپا مشغول بکار می باشد. از سال 88 برنامه نویسی را با زبانهای گروه C شروع کرده و از سال 91 به سمت برنامه نویسی و طراحی وب رفت. وی هم اکنون درحال توسعه اپلیکیشن های موبایل با زبان swift است.

نظرات و سوالات کاربران

هنوز دیدگاه و یا سوالی ارسال نشده است.
هم اکنون شما اولین دیدگاه را ارسال کنید.