মিডলওয়্যার ব্যবহারকারী এবং অনুরোধের মধ্যে একটি স্তর হিসাবে কাজ করে। এর মানে হল যে ব্যবহারকারী যখন সার্ভারকে অনুরোধ করে তখন অনুরোধটি মিডলওয়্যারের মাধ্যমে পাস হবে এবং তারপর মিডলওয়্যার যাচাই করে যে অনুরোধটি প্রমাণীকৃত কিনা। ব্যবহারকারীর অনুরোধটি প্রমাণীকৃত হলে অনুরোধটি ব্যাকএন্ডে পাঠানো হয়। যদি ব্যবহারকারীর অনুরোধটি প্রমাণীকৃত না হয়, তাহলে মিডলওয়্যার ব্যবহারকারীকে লগইন স্ক্রিনে পুনঃনির্দেশ করবে।

একটি অতিরিক্ত মিডলওয়্যার প্রমাণীকরণ ব্যতীত বিভিন্ন কাজ সম্পাদন করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, CORS মিডলওয়্যার সমস্ত প্রতিক্রিয়াতে হেডার যুক্ত করার জন্য দায়ী।

Laravel ফ্রেমওয়ার্কের মধ্যে বেশ কিছু মিডলওয়্যার রয়েছে যেমন প্রমাণীকরণ এবং CSRF সুরক্ষা, এবং এগুলি সমস্ত app/Http/Middleware ডিরেক্টরিতে অবস্থিত ।

আমরা বলতে পারি যে মিডলওয়্যার হল একটি HTTP অনুরোধ ফিল্টার যেখানে আপনি শর্তগুলি পরীক্ষা করতে পারেন।

মিডলওয়্যারে আমরা নিম্নলিখিত বিষয়গুলি নিয়ে আলোচনা করতে যাচ্ছি:

  • একটি মিডলওয়্যার তৈরি করা
  • মিডলওয়্যার প্রয়োগ করা
  • মিডলওয়্যারে অবস্থা পরীক্ষা করা
  • রুট মিডলওয়্যার

একটি মিডলওয়্যার তৈরি করা:

এই কমান্ডটি php artisan make:midleware 'name of the Middleware' টাইপ করুন ।

উপরের স্ক্রিনে আমরা কমান্ডটি টাইপ করি "php artisan make:midleware CheckAge" যেখানে CheckAge হল মিডলওয়্যারের নাম। উপরের উইন্ডোটি দেখায় যে মিডলওয়্যারটি "CheckAge" নামে সফলভাবে তৈরি করা হয়েছে ৷

CheckAge মিডলওয়্যার তৈরি হয়েছে কিনা তা দেখতে, আপনার প্রজেক্টে যান। আমাদের প্রজেক্টের নাম laravelproject, তাই মিডলওয়্যারের পাথ হবে: C:\xampp\htdocs\laravelproject\app\Http\Middleware।

একটি মিডলওয়্যার প্রয়োগ করা:

মিডলওয়্যার হয় সমস্ত URL বা কিছু নির্দিষ্ট URL-এ প্রয়োগ করা যেতে পারে।

চলুন সব URL-এ মিডলওয়্যার প্রয়োগ করি।

স্টেপ - ০১: kernel.php ফাইলটি খুলুন। আমরা যদি সমস্ত ইউআরএলে মিডলওয়্যার প্রয়োগ করতে চাই, তাহলে মিডলওয়্যারের অ্যারোতে মিডলওয়্যারের পাথ যোগ করুন।

  1. <?php  
  2. namespace App\Http;  
  3. use Illuminate\Foundation\Http\Kernel as HttpKernel;  
  4. class Kernel extends HttpKernel  
  5. {  
  6.     /** 
  7.      *  The application's global HTTP middleware stack. 
  8.      * 
  9.      * These middleware are run during every request to your  application. 
  10.      * 
  11.      * @var array 
  12.      */  
  13.  protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,  
  14. \Illuminate\Foundation\Http \Middleware\ValidatePostSize::class,  
  15.  \App\Http\Middleware\TrimStrings::class,  
  16.  \App\Http\Middleware\CheckAge  
  17. ::class,  
  18.   \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,  
  19.     ];  
  20.   
  21.    /** 
  22.      * The application's route middleware groups. 
  23.      * 
  24.      * @var array 
  25.      */  
  26.       
  27. protected $middlewareGroups = [  
  28.         'web' => [  
  29.             \App\Http\Middleware\EncryptCookies::class,  
  30.             
  31.   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,  
  32.               
  33. \Illuminate\Session\Middleware\StartSession::class,  
  34.               
  35. // \Illuminate\Session\Middleware\AuthenticateSession::class,  
  36.             \Illuminate\View\Middleware   
  37. \ShareErrorsFromSession::class,  
  38.             
  39.   \App\Http\Middleware\VerifyCsrfToken::class,  
  40.               
  41. \Illuminate\Routing\Middleware\SubstituteBindings::class,  
  42.         ],  
  43.   
  44.         'api' => [  
  45.             'throttle:60,1',  
  46.             'bindings',  
  47.         ],  
  48.     ];  
  49.   
  50.       
  51.  /** 
  52.      * The application's route middleware. 
  53.      * 
  54.      * These middleware may be assigned to groups or used individually. 
  55.      * 
  56.      *   
  57. @var array 
  58.      */  
  59.     protected $routeMiddleware = [  
  60.           
  61. 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,  
  62.         'auth.basic' => \Illuminate\Auth\Middleware   
  63. \AuthenticateWithBasicAuth::class,  
  64.           
  65. 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,  
  66.           
  67. 'can' => \Illuminate\Auth\Middleware\Authorize::class,  
  68.         'guest' => \App\Http\Middleware   
  69. \RedirectIfAuthenticated::class,  
  70.       
  71.     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,  
  72.     ];  
  73. }  

স্টেপ - ০২: গিট ব্যাশ উইন্ডোতে php artisan serve কমান্ডটি টাইপ করুন ।

স্টেপ - ০৩: CheckAge.php ফাইলটি খুলুন , যা আপনি একটি মিডলওয়্যার হিসাবে তৈরি করেছেন।

  1. <?php  
  2.   
  3. namespace App\Http\Middleware;  
  4.   
  5. use Closure;  
  6.   
  7. class CheckAge  
  8.   
  9. {  
  10.       
  11. /** 
  12.      * Handle an incoming request. 
  13.      * 
  14.      * @param  \Illuminate\Http  
  15. \Request  $request 
  16.      * @param  \Closure  $next 
  17.      * @return mixed 
  18.      */  
  19.   public function handle($request, Closure $next)  
  20.  {  
  21.  //return "middleware";  
  22. echo "hello world";  
  23. return $next($request);  
  24. }  
  25. }  

স্টেপ - ০৪: এখন URL ' http://localhost/laravelproject/public/ ' লিখুন।

কিছু নির্দিষ্ট রুটে মিডলওয়্যার প্রয়োগ করা যাক।

স্টেপ - ০১: kernel.php ফাইলটি খুলুন। আমরা যদি কিছু নির্দিষ্ট রুটে মিডলওয়্যার প্রয়োগ করতে চাই

  1. <?php  
  2. namespace App\Http;  
  3. use Illuminate\Foundation\Http\Kernel as HttpKernel;  
  4. class Kernel extends HttpKernel  
  5. {  
  6.     /** 
  7.      *  The application's global HTTP middleware stack. 
  8.      * 
  9.      * These middleware are run during every request to your  application. 
  10.      * 
  11.      * @var array 
  12.      */  
  13.   protected $middleware = [  
  14.    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,  
  15.    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,  
  16.   \App\Http\Middleware\TrimStrings::class,  
  17.          
  18.   
  19.     
  20.   
  21. \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,  
  22.     ];  
  23.  /** 
  24.      * The application's route middleware groups. 
  25.      * 
  26.      * @var array 
  27.      */  
  28.  protected $middlewareGroups = [  
  29.  'web' => [  
  30.   \App\Http\Middleware\EncryptCookies::class,  
  31.   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,  
  32.   \Illuminate\Session\Middleware\StartSession::class,  
  33.   // \Illuminate\Session\Middleware\AuthenticateSession::class,  
  34.   \Illuminate\View\Middleware \ShareErrorsFromSession::class,  
  35.  \App\Http\Middleware\VerifyCsrfToken::class,  
  36.  \Illuminate\Routing\Middleware\SubstituteBindings::class,  
  37.  ],  
  38.   
  39.  'api' => [  
  40.             'throttle:60,1',  
  41.             'bindings',  
  42.         ],  
  43.     ];  
  44.  /** 
  45.      * The application's route middleware. 
  46.      * 
  47.      * These middleware may be assigned to groups or used individually. 
  48.      * 
  49.      *   
  50. @var array 
  51.      */  
  52.     protected $routeMiddleware = [  
  53.           
  54. 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,  
  55.         'auth.basic' => \Illuminate\Auth\Middleware   
  56. \AuthenticateWithBasicAuth::class,  
  57.           
  58. 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,  
  59.           
  60. 'can' => \Illuminate\Auth\Middleware\Authorize::class,  
  61.         'guest' => \App\Http\Middleware   
  62. \RedirectIfAuthenticated::class,  
  63.       
  64.     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,  
  65.    
  66. 'age' =>  \App\Http\Middleware\CheckAge::class ];  
  67.          
  68. }  

উপরের কোডে আমরা কোড যোগ করেছি যেমন ''age' => \App\Http\Middleware\CheckAge::class', যেখানে বয়স হল মিডলওয়্যারের নাম। এখন আমরা কিছু নির্দিষ্ট রুটের জন্য 'age' মিডলওয়্যার ব্যবহার করতে পারি।

স্টেপ-০২: CheckAge.php ফাইলটি খুলুন যা আপনি একটি মিডলওয়্যার হিসাবে তৈরি করেছেন।

স্টেপ-০৩: web.php ফাইলে মিডলওয়্যার কোড যোগ করুন ।

  1. Route::Get('/',function()  
  2. {  
  3.   return view('welcome');  
  4. })-> middleware('age');  
  5. Route::Get('user/profile',function()  
  6. {  
  7.   return "user profile";  
  8. });  

উপরের কোডে, আমরা '/' রুট ইউআরএলে মিডলওয়্যার যোগ করেছি এবং আমরা 'user/profile' ইউআরএলে মিডলওয়্যার যোগ করিনি।

আউটপুট:

যখন আমরা রুট ইউআরএল অ্যাক্সেস করি তখন আউটপুট হবে। উপরের আউটপুটটি দেখায় যে মিডলওয়্যার কোডটিও অ্যাক্সেস করা হয়েছে কারণ এটি একটি "হ্যালো ওয়ার্ল্ড" প্রদর্শন করছে।

যখন আমরা ইউআরএল অ্যাক্সেস করি, অর্থাৎ i.e., /user/profile, তখন আউটপুট হবে।

উপরের আউটপুট যে মিডলওয়্যার কোডটি অ্যাক্সেস করা হয়নি।

যখন প্যারামিটার একটি URL এ পাস করা হয়।

web.php

  1. Route::Get('/{age}',function($age)  
  2. {  
  3.   return view('welcome');  
  4. })-> middleware('age');  

CheckAge.php

  1. <?php  
  2. namespace App\Http\Middleware;  
  3. use Closure;  
  4. class CheckAge  
  5. {  
  6.  /** 
  7.  * Handle an incoming request. 
  8.  * 
  9.       
  10. * @param 
  11.   \Illuminate\Http\Request  $request 
  12.  * @param  \Closure  $next 
  13.  * @return mixed 
  14.  */  
  15.   public function handle($request, Closure $next)  
  16.  {  
  17.  //return "middleware";  
  18. echo "this is checkage middleware";  
  19. return $next($request);  
  20. }}  

আউটপুট:

মিডলওয়্যারের অবস্থা পরীক্ষা করা:

অবস্থা পরীক্ষা করতে মিডলওয়্যারও ব্যবহার করা যেতে পারে। একটি উদাহরণের মাধ্যমে বোঝা যাক।

  1. Route::Get('/{age}',function($age)  
  2. {  
  3.   return view('welcome');  
  4. })-> middleware('age');  
  1. <?php  
  2. namespace App\Http\Middleware;  
  3. use Closure;  
  4. class CheckAge  
  5. {  
  6.       
  7. /** 
  8.      * Handle an incoming request. 
  9.      * 
  10.       
  11. * @param 
  12.   \Illuminate\Http\Request  $request 
  13.      
  14.  * @param  \Closure  $next 
  15.      * @return mixed 
  16.      */  
  17.    
  18.    public function handle($request, Closure $next)  
  19.       
  20. {  
  21.   //return "middleware";  
  22. if($request->age>10)  
  23. {  
  24. echo "Age is greater than 10";  
  25. }  
  26. else  
  27. {  
  28. echo"Age is not greater than 10";  
  29. }  
  30. return $next($request);  
  31.       
  32. }}  

আউটপুট:

আপনাদের সুবিধার্থে আমি আমার টিপস এন্ড ট্রিকসগুলি ভিডিও আকারে শেয়ার করার জন্য একটি ইউটিউব চ্যানেল তৈরি করেছি। আশা করি চ্যানেলটি Subscribe করবেন।

সৌজন্যে : বাংলাদেশের জনপ্রিয় এবং বর্তমান সময়ের বাংলা ভাষায় সকল গুরুত্বপূর্ণ বিষয়ক টিউটোরিয়াল সাইট - www.TutorialBD71.blogspot.com নিত্যনতুন বিভিন্ন বিষয়ে টিউটোরিয়াল পেতে সাইটটিতে সবসময় ভিজিট করুন।

Leave a Comment