Laravel PHP Framework की दुनिया में एक Powerful Tool है, और Middleware इसका एक Core Concept है। अगर आप Web Development सीख रहे हैं या Professional Developer बनना चाहते हैं, तो Middleware समझना बहुत जरूरी है। Middleware एक ऐसा Layer है जो User के Request और Application के Response के बीच में काम करता है। इसे एक Security Guard या Filter की तरह समझ सकते हैं, जो हर Request को Check करता है और उसे Process करने से पहले Validate करता है।
⭐Laravel Middleware क्या है?
Middleware Laravel का एक Mechanism है जो HTTP Requests को Filter करता है। जब कोई User आपके Application पर Request भेजता है (जैसे किसी Page को Access करना), तो Middleware उस Request को पकड़ता है और उस पर कुछ Actions Perform करता है। उदाहरण के लिए:
- Authentication Middleware: यह Check करता है कि User Logged In है या नहीं।
- Logging Middleware: यह हर Request का Log Maintain करता है।
Middleware यह कर सकता है:
- User authentication check
- Permissions check
- API token validation
- Request data filter
- Redirect करना
- Headers modify करना
- Logging
📌 Middleware क्यों उपयोग होता है?
- Application को secure करने के लिए
- Controlled access देने के लिए
- Validation rules enforce करने के लिए
- APIs में token verification करने के लिए
- Maintenance mode check करने के लिए
सिर्फ एक middleware लगाने से आप पूरी access policy बदल सकते हैं।
🧠 Middleware कैसे काम करता है?
हर incoming request इस तरह जाती है:
User Request → Middleware → Controller → Response → Middleware → UserBashहमें Middleware की जरूरत क्यों है?
आप सोच रहे होंगे, “क्या मैं ये सारी चेकिंग सीधे अपने कंट्रोलर (Controller) में नहीं कर सकता?”
हाँ, कर सकते हैं। लेकिन सोचिए, अगर आपकी वेबसाइट में 100 अलग-अलग पेज हैं जिन्हें केवल लॉग-इन किए हुए यूजर ही देख सकते हैं। तो क्या आप उन 100 पेजों के कोड में बार-बार यह चेक करने का कोड लिखेंगे कि “क्या यूजर लॉग-इन है?”
यह बहुत खराब तरीका होगा (इसे हम DRY – Don’t Repeat Yourself सिद्धांत का उल्लंघन कहते हैं)।
मिडलवेयर हमें इन समस्याओं से बचाता है:
- ✅ सुरक्षा (Security): सबसे बड़ा फायदा। यह सुनिश्चित करता है कि केवल सही लोग ही सही डेटा तक पहुँचें (जैसे ऑथेंटिकेशन)।
- ✅ कोड की सफाई (Clean Code): आपको हर कंट्रोलर में एक ही तरह का चेकिंग कोड बार-बार नहीं लिखना पड़ता।
- ✅ एक जगह नियंत्रण (Centralized Control): अगर आपको सुरक्षा नियमों में बदलाव करना है, तो सिर्फ एक मिडलवेयर फाइल में बदलाव करें, और वह पूरी वेबसाइट पर लागू हो जाएगा।
- ✅ रिक्वेस्ट में बदलाव (Modifying Requests): कभी-कभी हमें आने वाले डेटा को साफ करना होता है (जैसे एक्स्ट्रा स्पेस हटाना), यह काम भी मिडलवेयर करता है।
Example: एक भारतीय कहानी: जब राहुल ने बनाई अपनी वेबसाइट
आइए इसे भारत के एक रियल-लाइफ उदाहरण से और गहराइ से समझते हैं।
राहुल, जो जयपुर का रहने वाला है, ने एक वेबसाइट बनाई जहाँ वह प्रतियोगी परीक्षाओं (Competitive Exams) के लिए प्रीमियम नोट्स और वीडियो बेचता है।
चुनौती: उसकी वेबसाइट पर दो तरह के पेज हैं:
- होम पेज और ब्लॉग: जिसे कोई भी देख सकता है (फ्री)।
- प्रीमियम कंटेंट पेज: जहाँ नोट्स की PDF हैं। इसे सिर्फ वही देख सकते हैं जिन्होंने पैसे देकर ‘मेंबरशिप’ ली है।
समस्या: शुरुआत में, राहुल ने प्रीमियम पेज के कंट्रोलर में ही कोड लिख दिया कि “अगर यूजर पेड मेंबर नहीं है, तो उसे एरर दिखाओ”।
लेकिन जैसे-जैसे उसकी साइट बड़ी हुई, उसने वीडियो सेक्शन जोड़ा, फिर क्विज़ सेक्शन जोड़ा। उसे हर जगह वही चेकिंग कोड कॉपी-पेस्ट करना पड़ा। एक दिन वह एक नए सेक्शन में यह कोड लगाना भूल गया, और उसका प्रीमियम कंटेंट फ्री में लीक हो गया!
समाधान (मिडलवेयर की एंट्री): राहुल ने लारावेल मिडलवेयर के बारे में सीखा। उसने एक CheckPaidMember नाम का मिडलवेयर बनाया।
अब, जब भी कोई यूजर किसी प्रीमियम पेज पर जाने की कोशिश करता है:
- रिक्वेस्ट पहले
CheckPaidMemberमिडलवेयर के पास जाती है। - मिडलवेयर चेक करता है: “क्या यह यूजर पेड मेंबर है?”
- अगर हाँ: तो रिक्वेस्ट आगे बढ़ती है और पेज खुल जाता है।
- अगर नहीं: तो मिडलवेयर यूजर को वहीं रोक देता है और उसे ‘पेमेंट पेज’ पर रीडायरेक्ट कर देता है।
राहुल को अब अपने किसी भी कंट्रोलर में सुरक्षा की चिंता करने की जरूरत नहीं है। उसका मिडलवेयर गार्ड हर प्रीमियम दरवाजे पर तैनात है।
🧩 Laravel में Middleware कहाँ पर होते हैं?
Middleware Laravel के इन स्थानों पर मिलते हैं:
1. app/Http/Middleware/
सभी custom middleware यहीं stored होते हैं।
2. app/Http/Kernel.php
Middleware को register और assign करने की जगह।
📁 Types of Middleware in Laravel
लारावेल में मुख्य रूप से तीन तरह से मिडलवेयर का उपयोग होता है। इसे समझना बहुत आसान है:
Global Middleware:
यह वह मिडलवेयर है जो आपकी एप्लीकेशन में आने वाली हर एक रिक्वेस्ट पर चलता है। चाहे यूजर होम पेज खोले, कॉन्टैक्ट पेज खोले या API कॉल करे।
- उदाहरण: लारावेल में
TrimStringsऔरConvertEmptyStringsToNullनाम के मिडलवेयर पहले से आते हैं। ये हर रिक्वेस्ट में आने वाले डेटा में से एक्स्ट्रा स्पेस हटा देते हैं। यह पूरी साइट के लिए जरूरी होता है।
Route Middleware:
यह सबसे ज्यादा इस्तेमाल होता है। यह मिडलवेयर सिर्फ उन्हीं रास्तों (Routes/URLs) पर चलता है जिन पर आप इसे लगाते हैं।
- उदाहरण: जैसा राहुल की कहानी में
CheckPaidMemberमिडलवेयर। इसे सिर्फ प्रीमियम कंटेंट वाले URL पर लगाया जाएगा, होम पेज पर नहीं। लारावेल का इनबिल्टauthमिडलवेयर इसका सबसे अच्छा उदाहरण है।
Middleware Groups:
कभी-कभी हमें एक ही रास्ते पर कई सारे चेक लगाने पड़ते हैं। बार-बार अलग-अलग मिडलवेयर लगाने के बजाय, लारावेल हमें उन्हें एक ‘ग्रुप’ में रखने की सुविधा देता है।
लारावेल में डिफ़ॉल्ट रूप से दो ग्रुप आते हैं:
web: इसमें वे सारे मिडलवेयर होते हैं जो वेबसाइट के आम पेजों के लिए जरूरी हैं (जैसे सेशन स्टार्ट करना, कुकीज चेक करना, CSRF प्रोटेक्शन)।api: यह API रूट्स के लिए होता है और इसमें कम चेक होते हैं क्योंकि API स्टेटलेस होते हैं।
📁 How Middleware Works in Laravel
मिडलवेयर को एक “प्याज” (Onion) की तरह समझें।
जब एक रिक्वेस्ट आती है, तो उसे एप्लीकेशन के केंद्र (Core) तक पहुँचने के लिए मिडलवेयर की कई परतों से गुजरना पड़ता है।
प्रक्रिया (The Journey):
- यूजर रिक्वेस्ट (User Request): यूजर ने ब्राउज़र में URL डाला।
- एंट्री (Entry): रिक्वेस्ट लारावेल एप्लीकेशन में दाखिल हुई।
- मिडलवेयर 1 (जांच): पहले मिडलवेयर ने रिक्वेस्ट को चेक किया। सब ठीक है? तो आगे बढ़ाया।
- मिडलवेयर 2 (जांच): दूसरे ने चेक किया। (मान लो यह ऑथेंटिकेशन चेक है)।
- एप्लीकेशन लॉजिक (Controller): सारी जांच पार करने के बाद रिक्वेस्ट कंट्रोलर तक पहुँचती है। कंट्रोलर अपना काम करता है और एक ‘रिस्पॉन्स’ (Response) तैयार करता है (जैसे HTML पेज)।
- वापसी यात्रा (Return Journey): अब यह रिस्पॉन्स वापस उन्ही मिडलवेयर से होकर गुजरता है (उल्टे क्रम में) और अंत में यूजर के ब्राउज़र तक पहुँचता है।
ध्यान दें: अगर किसी भी स्टेज पर कोई मिडलवेयर फेल हो जाता है (जैसे यूजर लॉग-इन नहीं है), तो वह रिक्वेस्ट को वहीं रोक देता है और कंट्रोलर तक बात पहुँचती ही नहीं है।
📁 Before vs After
मिडलवेयर अपना काम दो समय पर कर सकता है: रिक्वेस्ट के कंट्रोलर तक पहुँचने से पहले या रिस्पॉन्स के यूजर तक पहुँचने से पहले (यानी कंट्रोलर के काम करने के बाद)।
A. Before Middleware
यह सबसे आम है। यह तब चलता है जब रिक्वेस्ट एप्लीकेशन में आ रही होती है।
- काम: यह चेक करता है कि रिक्वेस्ट वैलिड है या नहीं।
- उदाहरण: ऑथेंटिकेशन चेक करना, क्या यूजर बैन है? क्या CSRF टोकन सही है?
// Before Middleware का उदाहरण (Conceptual Code)
public function handle($request, Closure $next)
{
// 1. पहले अपना काम करो (जांच)
if ($request->user_is_banned) {
return redirect('home'); // अगर बैन है तो वापस भेजो
}
// 2. अगर सब ठीक है, तो रिक्वेस्ट को आगे (next) भेजो
return $next($request);
}PHPB. After Middleware
यह तब चलता है जब कंट्रोलर अपना काम कर चुका होता है और रिस्पॉन्स तैयार हो चुका होता है, लेकिन अभी यूजर को भेजा नहीं गया है।
- काम: तैयार रिस्पॉन्स में कुछ बदलाव करना या कुछ लॉग (Log) करना।
- उदाहरण: मान लीजिए आप ट्रैक करना चाहते हैं कि किस पेज को लोड होने में कितना समय लगा। कंट्रोलर के काम करने के बाद आप यह डेटा सेव कर सकते हैं। या आप रिस्पॉन्स में कोई खास हैडर (Header) जोड़ना चाहते हैं।
// After Middleware का उदाहरण (Conceptual Code)
public function handle($request, Closure $next)
{
// 1. पहले रिक्वेस्ट को आगे जाने दो और रिस्पॉन्स आने का इंतजार करो
$response = $next($request);
// 2. अब जब रिस्पॉन्स आ गया है, तो उस पर अपना काम करो
// (जैसे: रिस्पॉन्स में एक कुकी जोड़ना)
$response->cookie('visited_at', now());
// 3. बदले हुए रिस्पॉन्स को वापस भेजो
return $response;
}PHP📁 How To Create Your First Middleware
हमारा लक्ष्य: एक ऐसा मिडलवेयर बनाना जो चेक करे कि यूजर की उम्र 18 साल से ज्यादा है या नहीं। अगर नहीं, तो उसे रोक दे।
Step 1: आर्टिज़न कमांड का उपयोग (Use Artisan Command)
लारावेल में फाइलें मैन्युअल रूप से बनाने की जरूरत नहीं होती। हम टर्मिनल (Terminal) या कमांड प्रॉम्प्ट का उपयोग करेंगे। अपने प्रोजेक्ट फोल्डर में यह कमांड चलाएँ:
php artisan make:middleware CheckAgeBashजैसे ही आप एंटर दबाएंगे, लारावेल आपके लिए जादू करेगा और app/Http/Middleware फोल्डर के अंदर CheckAge.php नाम की एक नई फाइल बना देगा।
Step 2: कोड लिखना (Write the Logic)
अब उस नई फाइल (app/Http/Middleware/CheckAge.php) को खोलें। आपको handle नाम का एक फंक्शन दिखेगा। हमें अपना लॉजिक यहीं लिखना है।
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
// हमारा लॉजिक यहाँ आएगा:
// हम चेक कर रहे हैं कि रिक्वेस्ट में 'age' 18 से कम तो नहीं है।
// (मान लीजिए URL ऐसा है: yoursite.com/AdultPage?age=15)
if ($request->age && $request->age < 18) {
// अगर उम्र 18 से कम है, तो उसे होम पेज पर भेज दो।
return redirect('home');
}
// अगर उम्र ठीक है, तो रिक्वेस्ट को आगे ($next) जाने दो।
return $next($request);
}
}PHPबस! हमारा मिडलवेयर तैयार है। लेकिन अभी लारावेल को इसके बारे में पता नहीं है। हमें इसे ‘रजिस्टर’ करना होगा।
📁 How To Register Your Middleware
मिडलवेयर बनाने के बाद, उसे इस्तेमाल करने के लिए हमें लारावेल के “रजिस्टर” में उसका नाम दर्ज करना होता है। यह रजिस्टर है: app/Http/Kernel.php फाइल।
इस फाइल को खोलें। आपको यहाँ तीन महत्वपूर्ण एरे (Arrays) दिखेंगे, जो हमने ‘प्रकार’ वाले सेक्शन में समझे थे:
1. $middleware (ग्लोबल मिडलवेयर): अगर आप चाहते हैं कि आपका CheckAge मिडलवेयर साइट की हर रिक्वेस्ट पर चले, तो उसे यहाँ जोड़ें।
protected $middleware = [
// ... दूसरे मिडलवेयर
\App\Http\Middleware\CheckAge::class, // यहाँ जोड़ दिया
];PHP2. $middlewareGroups (ग्रुप्स): अगर आप इसे web या api ग्रुप का हिस्सा बनाना चाहते हैं, तो यहाँ जोड़ें।
3. $routeMiddleware (रूट मिडलवेयर – सबसे आम): अगर आप इसे सिर्फ कुछ खास रूट्स पर इस्तेमाल करना चाहते हैं, तो आपको यहाँ इसे एक छोटा ‘निकनेम’ (alias) देना होगा।
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
// ...
'check.age' => \App\Http\Middleware\CheckAge::class, // हमने 'check.age' नाम दिया
];PHPStep 3: रूट में इस्तेमाल करना (Using in Routes)
अब, जब हमने इसे रजिस्टर कर लिया है और ‘check.age’ नाम दे दिया है, तो हम इसे अपनी routes/web.php फाइल में इस्तेमाल कर सकते हैं
// routes/web.php
Route::get('adult-content', function () {
return "स्वागत है! आप 18+ हैं।";
})->middleware('check.age'); // यहाँ हमने अपना मिडलवेयर लगा दियाPHPअब, अगर कोई yoursite.com/adult-content?age=20 पर जाएगा, तो उसे पेज दिखेगा। लेकिन अगर कोई yoursite.com/adult-content?age=12 पर जाएगा, तो वह होम पेज पर रीडायरेक्ट हो जाएगा।
📁 Practical Use Cases
मिडलवेयर सिर्फ उम्र चेक करने के लिए नहीं है। इसके अनगिनत उपयोग हैं। यहाँ कुछ सबसे सामान्य दिए गए हैं:
- 🔐 ऑथेंटिकेशन (Authentication): सबसे जरूरी। यह चेक करना कि यूजर लॉग-इन है या नहीं। लारावेल का
authमिडलवेयर यही करता है। - 👮♂️ ऑथोराइजेशन (Authorization/Roles): यूजर लॉग-इन तो है, लेकिन क्या उसे एडमिन पेज देखने की परमिशन है? यह चेक करने के लिए आप
CheckRoleजैसा मिडलवेयर बना सकते हैं। - 🌐 CORS (Cross-Origin Resource Sharing): जब आप API बनाते हैं, तो आपको तय करना होता है कि कौन सी दूसरी वेबसाइटें आपकी API को एक्सेस कर सकती हैं। CORS मिडलवेयर इसे हैंडल करता है।
- ⏱️ रेट लिमिटिंग (Rate Limiting): अगर कोई बॉट (Bot) आपकी साइट पर एक सेकंड में 100 बार रिक्वेस्ट भेज रहा है, तो आप उसे ब्लॉक करना चाहेंगे।
throttleमिडलवेयर रिक्वेस्ट की गति को सीमित करता है। - 🌍 भाषा सेट करना (Localization): यूजर की लोकेशन या पसंद के आधार पर वेबसाइट की भाषा (हिंदी/अंग्रेजी) सेट करने के लिए मिडलवेयर का उपयोग किया जा सकता है।
दोस्तों, जैसा कि आपने देखा, लारावेल मिडलवेयर कोई रॉकेट साइंस नहीं है। यह बस आपकी वेबसाइट का एक वफादार ‘सिक्योरिटी गार्ड’ है।
मुख्य बातें याद रखें:
- मिडलवेयर रिक्वेस्ट और एप्लीकेशन के बीच की एक परत है।
- इसका उपयोग मुख्य रूप से सुरक्षा, फिल्टरिंग और रिक्वेस्ट में बदलाव के लिए होता है।
- आप ग्लोबल, ग्रुप या रूट-स्पेसिफिक मिडलवेयर बना सकते हैं।
- मिडलवेयर बनाने के लिए
php artisan make:middlewareकमांड का उपयोग करें। - इस्तेमाल करने से पहले इसे
Kernel.phpमें रजिस्टर करना न भूलें।
मिडलवेयर का सही इस्तेमाल आपके कोड को साफ-सुथरा, सुरक्षित और प्रोफेशनल बनाता है।
Free Business Submitting Website

Welcome to HindiTutorials, your go-to platform for learning and mastering concepts in Hindi! Our mission is to make education accessible and simple for everyone by providing high-quality tutorials on programming, technology, and various other topics.