مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش Middleware ها در Laravel - لاراول


middleware در لغت به معنای "میان افزار" است و درواقع مانند پلی ، بین درخواست و پاسخ عمل می کند. به عبارتی دیگر middleware یک نوع مکانیزم فیلتر است که، می توان درخواست های HTTP  را قبل از ورود به برنامه فیلتر کرد.

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

https://cdn-images-1.medium.com/max/1600/1*Fnreje0WgqdBjjLXop9L0A.png

 

در لاراول middleware های زیادی وجود دارد، ازجمله : middleware احراز هویت و حفاظت CSRF که در مسیر app/http/Middleware می توانید آ نها را مشاهده نمایید.

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

برای ساختن middleware  از دستور آرتیسان زیر در محیط Command استفاده کنید :

php artisan make:middleware <middleware-name>

بجای <middleware-name>   نام middleware موردنظرتان را بنویسید.

برای مشاهده middleware ی که ساخته اید، می توانید به مسیر app/Http/Middleware  رجوع کنید و آن را مشاهده نمایید.

مثال:

برای درک مکانیزم middleware مثال زیر را مشاهده کنید:

مرحله اول : یک middlware به اسم AgeMiddleware  می سازیم.

php artisan make:middleware AgeMiddleware

مرحله دوم : بعد از ساخت middleware پیامی مبنی بر موفقت آمیز بودن دستور فوق برای شما نمایش داده می شود.

مرحله سوم : AgeMiddleware  در مسیر app/Http/Middleware ساخته شده است . این فایل جدیدِ ساخته شده بطور پیشفرض، حاوی کدهای زیر می باشد.

<?php

namespace App\Http\Middleware;
use Closure;

class AgeMiddleware {
   public function handle($request, Closure $next) {
      return $next($request);
   }
}

 

ثبت Middleware

بعد از ساخت  middleware باید آن را ثبت کنیم تا بتوانیم بر روی هر در خواست  HTTP از آن استفاده کنیم.

در لاراول دو نوعmiddleware  وجود دارد :

  • Global Middleware
  • Route Middleware

Global Middleware

Global Middleware یا ثبت middleware بصورت Global. درلاراول بدین صورت است که، اگر قصد دارید که middleware برروی هر درخواست HTTP اجرا شود، وارد فایل app/Http/Kernel.php  شوید و  middlreware را داخل متغیر  middleware$ لیست کنید.

protected $middleware = [
   \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
   \App\Http\Middleware\EncryptCookies::class,
   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
   \Illuminate\Session\Middleware\StartSession::class,
   \Illuminate\View\Middleware\ShareErrorsFromSession::class,
   \App\Http\Middleware\VerifyCsrfToken::class,
];

 

Route Middleware

Route Middleware یا اختصاصِ middleware به مسیر(Route) . در لاراول بدین صورت است که  اگر قصد دارید middleware را به مسیر خاصی اختصاص دهید، باید وارد فایل app/Http/Kernel.php شوید. یک کلید برای ثبت middleware تان در نظر بگیرید و درمتغیر routeMiddleware$  آنرا لیست کنید.

protected $routeMiddleware = [
   'auth' => \App\Http\Middleware\Authenticate::class,
   'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
   'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];

                               

مثال :

AgeMiddleware را که در مثال قبل ساختیم در فایل app/Http/Kernel.php بصورت RouteMiddleware ذخیره می کنیم. و برای مسیرهای خاصی از آن استفاده می کنیم.

<?php

namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {
   protected $middleware = [
      \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
      \App\Http\Middleware\EncryptCookies::class,
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
      \Illuminate\Session\Middleware\StartSession::class,
      \Illuminate\View\Middleware\ShareErrorsFromSession::class,
      \App\Http\Middleware\VerifyCsrfToken::class,
   ];
  
   protected $routeMiddleware = [
      'auth' => \App\Http\Middleware\Authenticate::class,
      'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
      'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
      'Age' => \App\Http\Middleware\AgeMiddleware::class,
   ];
}

 

اختصاص یک middleware به یک مسیر :

Route::get('/', function () {
    //
})->middleware( 'Age');

اختصاص چند middleware به یک مسیر :

Route::get('/', function () {
    //
})->middleware('auth', 'Age');

 

پارامترهای Middleware

در لاراول ما می توانیم پارمترهایی را نیز به  middleware منتقل کنیم. به عنوان مثال اگر برنامه شما شامل role ها یا نقش هایی همچون user  ، Admin و superAdmin باشد و شما می خواهید بعد از احراز هویت بر اساس نقش، عمل خاصی انجام شود، این هدف، با ارسال پارامتر به middleware میسر می گردد.

public function handle($request, Closure $next) {
   return $next($request);
}

مثال :

مرحله 1 – بوسیله دستور آرتیسان زیر یک middleware به اسم RoleMiddleware  ایجاد می کنیم

php artisan make:middleware RoleMiddleware

مرحله 2 – بعد از ساخت middleware پیامی مبنی بر موفقت آمیز بودن دستور فوق برای شما نمایش داده می شود.

 

مرحله 3 – وارد فایل app/Http/Middleware/RoleMiddleware.php  شوید و کد زیر را داخل متد handle  قرار دهید.

<?php

namespace App\Http\Middleware;
use Closure;

class RoleMiddleware {
   public function handle($request, Closure $next, $role) {
      echo "Role: ".$role;
      return $next($request);
   }
}

مرحله 4 –  وارد فایل app\Http\Kernel.php می شویم و middleware ی که ساختیم را ثبت می کنیم ( طبق آنچه که بصورت هایلایت در تصویر زیر نمایش داده شده است)

مرحله 5 – به وسیله دستور آرتیسان زیر یک کنترلر به اسم TestController ایجاد می کنیم .

php artisan make:controller TestController --plain

مرحله 6 –  بعد از ساخت Controller پیامی مبنی بر موفقت آمیز بودن دستور فوق برای شما نمایش داده می شود.

 

مرحله 7 –   وارد فایل app/Http/TestController.php  شوید و کدهای زیر را در آن قرار دهید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller {
   public function index(){
      echo "<br>Test Controller.";
   }
}

مرحله 8 –  وارد فایل app/Http/routes.php شوید و کدهای زیر را در آن قرار دهید.

Route::get('role',[
   'middleware' => 'Role:editor',
   'uses' => 'TestController@index',
]);

مرحله 9 – برای تست پارامتردهی به middleware وارد مرورگر خود شوید و آدرس زیر را وارد کنید .

http://localhost:8000/role

مرحله 10 – خروجی که مشاهده خواهید کرد بدین شکل خواهد بود .

 

Middleware پایان‌ پذیر

Terminable Middleware  یا middleware های پایان پذیر ،  یکسری کارها را بعد از ارسال پاسخ به مرورگر انجام می دهند. middleware های پایان پذیر باید به لیست مسیر یا middleware های عمومی در فایل app/Http/Kernel.php  اضافه شوند.

این نوع middleware ها دارای یک متد به نام  terminate هستند، که دو پارامتر درخواست و پاسخ را دریافت می کنند. و بلافاصله بعد از ارسال پاسخ به مرورگر فرخوانی می شود.

مثال :

مرحله 1 – بوسیله دستور آرتیسان زیر یک TerminateMiddleware  ایجاد می کنیم.

php artisan make:middleware TerminateMiddleware

مرحله 2 – بعد از ساخت middleware پیامی مبنی بر موفقت آمیز بودن دستور فوق برای شما نمایش داده می شود.

 

مرحله 3 – وارد TerminateMiddleware در مسیر app/Http/Middleware/TerminateMiddleware.php   می شوید و کد زیر را در آن قرار می دهید.

<?php

namespace App\Http\Middleware;
use Closure;

class TerminateMiddleware {
   public function handle($request, Closure $next) {
      echo "Executing statements of handle method of TerminateMiddleware.";
      return $next($request);
   }
   
   public function terminate($request, $response){
      echo "<br>Executing statements of terminate method of TerminateMiddleware.";
   }
}

مرحله 4 – TerminateMiddleware  در فایل app\Http\Kernel.php ثبت می کنیم. (طبق آنچه که در تصویر هایلایت شده است)

 

مرحله 5 – بوسیله دستور آرتیسان زیر، یک کنترلر به اسم ABCController  ایجاد می کنیم.

php artisan make:controller ABCController --plain

مرحله 6 – بعد از ساخت controller پیامی مبنی بر موفقت آمیز بودن دستور فوق برای شما نمایش داده می شود.

مرحله 7 – داخل فایل app/Http/ABCController.php بروید و کدهای زیر را در آن قرار دهید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ABCController extends Controller {
   public function index(){
      echo "<br>ABC Controller.";
   }
}

مرحله 8 – وارد فایل app/Http/routes.php شوید و کدهای زیر را در آن قرار دهید.

Route::get('terminate',[
   'middleware' => 'terminate',
   'uses' => 'ABCController@index',
]);

مرحله 9 – برای تست Terminable Middleware وارد مرورگر شوید و URL زیر را در آدرس بار وارد کنید.

http://localhost:8000/terminate

 

مرحله 10 – حال می توانید خروجی را مشاهده کنید.

فصلِ: 28 , تعداد قسمت ها: 253 , سطح: صفر تا صد

این فصل در یک نگاه:

آشنایی با امکانات جدید لاراول ۷…

برخی از سرفصل های این پکیج آموزشی :   لاراول چیست و چرا ما لاراول استفاده میکنیم کامپوزر کارش چیه و نصب اون نصب لاراول آموزش نصب لاراول از طریق اینستالر آموزش نصب لاراول با استفاده ا…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: متوسط

این فصل در یک نگاه:

بهترین و پر بازده ترین روش تبدیل بازدیدکننده سایت به مشتری تبلیغات هدفمند و برند سازی هوشمندانه با ایمیل می باشد. ایمیل…

  وبینار(سمینار آنلاین) آموزش تکنیک های ایمیل مارکتینگ   اگر تا انتها این متن را مطالعه کنید نظر شما در مورد ایمیل مارکتینگ 180 درجه عوض می شود!! بر هیچکس پوشیده نیست که از سال 1972 که ای…
فصلِ: 4 , تعداد قسمت ها: 368 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث تکمیلی فریم ورک لاراول…

فصل اول :آموزش مقدماتی فریم ورک لاراول معرفی فریم ورک لاراول و پیشنیازهای انجام کار انجام کانفیگ های اولیه برای نصب و راه اندازی فریم ورک معرفی روش های نصب پروژه لاراولی از طریق سایت گی…
فصلِ: 1 , تعداد قسمت ها: 155 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث مقدماتی فریم ورک react.js…

توضیحات کلی مجموعه: فصل اول : آشنایی با مباحث مقدماتی فریم ورک react.js نصب و راه اندازی node.js  و کلیه پیش نیازهای لازم نصب فریم ورک react روی لوکال و انجام تست های لازم آغاز آشنایی …

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید