Middleware লারাভেলের একটি গুরুত্বপূর্ণ ফিচার যা একটি রিকোয়েস্ট এবং রেসপন্সের মধ্যে বিভিন্ন লজিক বা শর্তাবলী প্রয়োগ করতে ব্যবহৃত হয়। এটি প্রধানত নিরাপত্তা এবং অথেনটিকেশনসহ বিভিন্ন কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়। Middleware আপনাকে নির্দিষ্ট রাউট বা কন্ট্রোলার মেথডের আগে বা পরে কাজ করতে দেয়।
Middleware হলো একটি ফিল্টার যা একটি HTTP রিকোয়েস্টের জন্য কিছু কাজ পরিচালনা করে। উদাহরণস্বরূপ, একটি অথেনটিকেশন মিডলওয়্যার ইউজার লগইন আছে কিনা তা যাচাই করে এবং ইউজার লগইন না থাকলে তাকে লগইন পেজে রিডিরেক্ট করে। Middleware প্রধানত অ্যাপ্লিকেশন স্তরে রিকোয়েস্ট ফিল্টারিং এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
লারাভেলে নতুন Middleware তৈরি করতে আপনি php artisan make:middleware MiddlewareName
কমান্ডটি ব্যবহার করতে পারেন। এটি app/Http/Middleware
ডিরেক্টরিতে একটি নতুন Middleware ফাইল তৈরি করবে।
php artisan make:middleware CheckAge
এই কমান্ডটি চালালে, CheckAge.php
নামে একটি ফাইল তৈরি হবে। এখানে আপনি handle()
মেথডে আপনার লজিক যুক্ত করতে পারবেন।
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
এই উদাহরণে, যদি ইউজারের বয়স ১৮ বছরের কম হয়, তাহলে তাকে home
পেজে রিডিরেক্ট করা হবে।
Middleware তৈরি করার পরে, এটিকে app/Http/Kernel.php
ফাইলে নিবন্ধন করতে হবে।
protected $routeMiddleware = [
'checkAge' => \App\Http\Middleware\CheckAge::class,
];
এখানে checkAge
নামে Middleware রেজিস্টার করা হলো, যা পরে রাউটে ব্যবহার করা যাবে।
Global Middleware হলো এমন Middleware, যা প্রতিটি HTTP রিকোয়েস্টে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। এগুলোকে app/Http/Kernel.php
ফাইলে $middleware
অ্যারের মধ্যে নিবন্ধন করতে হয়।
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
// অন্য গ্লোবাল মিডলওয়্যার
];
এখানে Middleware গুলো সকল রিকোয়েস্টের জন্য প্রয়োগ হবে।
Middleware এক বা একাধিক রাউটের জন্য প্রয়োগ করা যায়। এর জন্য রাউটে middleware
মেথড ব্যবহার করতে হবে।
Route::get('/profile', function () {
// Profile view logic
})->middleware('checkAge');
এখানে checkAge
Middleware প্রয়োগ করা হয়েছে, যা রাউট এক্সেসের আগে বয়স যাচাই করবে।
Middleware গ্রুপিং ব্যবহার করে একাধিক Middleware একসাথে একাধিক রাউটে প্রয়োগ করা যায়। লারাভেলে web
এবং api
নামে দুটি ডিফল্ট Middleware গ্রুপ আছে।
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
এখানে web
এবং api
গ্রুপগুলো আলাদা ভাবে একাধিক Middleware যুক্ত করে তৈরি করা হয়েছে।
Middleware এর জন্য এলিয়াস বা সংক্ষিপ্ত নাম তৈরি করা যায়, যা রাউটে সহজেই ব্যবহার করা সম্ভব।
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
];
এখানে auth
নামে এলিয়াস তৈরি করা হয়েছে, যা রাউটে সহজেই ব্যবহার করা যাবে।
কিছু Middleware একটি নির্দিষ্ট ক্রমে কাজ করতে পারে, যেমন সিকোয়েন্স মেনে মিডলওয়্যারগুলো কাজ করবে। Middleware গুলোর কার্যক্রমের আগে বা পরে কাজ করার জন্য Middleware গুলোর ক্রম নির্ধারণ করতে পারেন।
Middleware-এ প্যারামিটার পাস করে শর্তাবলী আরও নির্দিষ্ট করা যায়। Middleware এর সাথে প্যারামিটার পাস করতে middleware
মেথডে প্যারামিটার যুক্ত করা হয়।
Route::get('/user/{id}', function ($id) {
// ইউজার সম্পর্কিত তথ্য
})->middleware('role:admin');
এখানে role
Middleware এ admin
প্যারামিটার পাস করা হয়েছে।
কিছু Middleware আছে, যা রেসপন্স পাঠানোর পরে কাজ করে। এ ধরনের Middleware কে terminable middleware
বলা হয়। এর জন্য Middleware ক্লাসে একটি terminate
মেথড ব্যবহার করা হয়।
public function terminate($request, $response)
{
// After response is sent
}
এই মেথডটি রেসপন্স পাঠানোর পরেও কার্যকর হবে।
লারাভেলের Middleware অ্যাপ্লিকেশন নিরাপত্তা, অথেনটিকেশন, অথরাইজেশনসহ বিভিন্ন কাজে গুরুত্বপূর্ণ ভূমিকা পালন করে। Middleware ব্যবহারের মাধ্যমে আপনি সহজে অ্যাপ্লিকেশনের কার্যক্রম নিয়ন্ত্রণ করতে পারেন। Middleware-এর মাধ্যমে আপনি রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়ায় বিভিন্ন নিয়ম এবং লজিক যুক্ত করে অ্যাপ্লিকেশনকে আরও নিরাপদ এবং কার্যকর করতে পারেন।
Read more