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

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 () {
    //
}]);

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

مجیدآنلاین


AMIR_AKD

دانشجوی کارآفرینی علاقه مند به کسب و کار،عاشق تکنولوژی و مهندس آی تی

0 دیدگاه در “آموزش لاراول؛محبوب ترین فریم ورک پی اچ پی -3”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوشته‌های پیوسته

آموزش

پیش بینی درآمد یک کسب‌ و کار

ترکیب کردن رویکردهای متفاوت پیش‌بینی، باعث می‌شود گزارش جامع‌تری به سرمایه‌گذاران ارائه دهید و اعتبار خود و محصولاتتان را نزد آن‌ها بالا ببرید.

آموزش

3 گام آسان برای ایجاد برند موفق

تا به حال به این موضوع فکر کرده اید که بزرگترین مشکل بیزنس شما چیست؟ مشکل از سرمایه و قیمت محصولات و سرویس ها نیست. مشکل نبود مشتری و نبود نیاز به محصول و یا سرویس شما نیست. حتی ممکن است مشکل از اقتصاد و بازار بی‌رونق کنونی نباشد و اغلب مشکلات از نبود شناخت و انزوای برند شما باشد. در حقیقت، برندینگ کسب‌وکار شما با مشکل مواجه است!

آموزش

مبارزه کارافرینان با تنبلی

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