इसका अर्थ है कि जब उपयोगकर्ता (Laravel view) सर्वर (Laravel नियंत्रक) से अनुरोध करता है, तो अनुरोध मिडलवेयर के माध्यम से जाएगा। इस तरह मिडलवेयर जांच कर सकता है कि अनुरोध प्रमाणित है या नहीं:
लारवेल आपको इसकी अनुमति देता है defiप्रमाणीकरण को छोड़कर विभिन्न प्रकार के कार्य करने के लिए अतिरिक्त मिडलवेयर को समाप्त करें और उसका उपयोग करें।
लारवेल मिडलवेयर, जैसे प्रमाणीकरण और सीएसआरएफ सुरक्षा, निर्देशिका में स्थित हैं ऐप/एचटीटीपी/मिडलवेयर .
इसलिए हम कह सकते हैं कि मिडलवेयर एक http अनुरोध फ़िल्टर है, जिसके माध्यम से शर्तों को सत्यापित करना और क्रियाएं करना संभव है।
एक नया मिडलवेयर बनाने के लिए हम निम्नलिखित कमांड चलाते हैं:
php artisan make:middleware <name-of-middleware>
हम बनाते हैं middleware
और हम इसे कहते हैं CheckAge
, artisan
हमें इस प्रकार उत्तर देंगे:
ऊपर दी गई विंडो से पता चलता है कि मिडलवेयर को नाम से सफलतापूर्वक बनाया गया है ” चेकएज ".
यह देखने के लिए कि CheckAge मिडलवेयर बनाया गया है या नहीं, ऐप/एचटीटीपी/मिडलवेयर फ़ोल्डर में प्रोजेक्ट पर जाएं, और आप नई बनाई गई फ़ाइल देखेंगे
नई बनाई गई फ़ाइल में निम्न कोड है
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
मिडलवेयर का उपयोग करने के लिए हमें इसे पंजीकृत करने की आवश्यकता है।
लारवेल में दो प्रकार के मिडलवेयर हैं:
Middleware globale
Route Middleware
Il वैश्विक मिडलवेयर एप्लिकेशन से प्रत्येक HTTP अनुरोध पर निष्पादित किया जाएगा, जबकि रूट मिडलवेयर एक विशिष्ट पथ को सौंपा जाएगा। मिडिलवेयर पर पंजीकृत किया जा सकता है ऐप/एचटीटीपी/कर्नेल.php. इस फ़ाइल में दो गुण हैं $ मिडलवेयर e $routeMiddleware . $ मिडलवेयर संपत्ति वैश्विक मिडलवेयर और स्वामित्व को पंजीकृत करने के लिए उपयोग किया जाता है $routeMiddleware मार्ग-विशिष्ट मिडलवेयर को पंजीकृत करने के लिए उपयोग किया जाता है।
वैश्विक मिडलवेयर को पंजीकृत करने के लिए, $ मिडलवेयर संपत्ति के अंत में वर्ग को सूचीबद्ध करें।
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
रूट-विशिष्ट मिडलवेयर को पंजीकृत करने के लिए, $routeMiddleware गुण में कुंजी और मान जोड़ें।
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
हमने बनाया चेकएज पिछले उदाहरण में। अब हम इसे मिडलवेयर रूट प्रॉपर्टी में रजिस्टर कर सकते हैं। ऐसे पंजीकरण के लिए कोड नीचे दिखाया गया है।
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
];
हम मिडलवेयर के साथ पैरामीटर भी पास कर सकते हैं।
उदाहरण के लिए, यदि आपके एप्लिकेशन में अलग-अलग भूमिकाएँ हैं जैसे उपयोगकर्ता, व्यवस्थापक, सुपर व्यवस्थापक आदि। और आप भूमिका के आधार पर कार्रवाई को प्रमाणित करना चाहते हैं, आप इसे मिडलवेयर के साथ पैरामीटर पास करके कर सकते हैं।
हमारे द्वारा बनाए गए मिडलवेयर में निम्न कार्य शामिल हैं, और हम तर्क के बाद कस्टम तर्क पारित कर सकते हैं $ अगला .
public function handle($request, Closure $next)
{
return $next($request);
}
अब एक नए मिडलवेयर के लिए रोल पैरामीटर सेट करने का प्रयास करें जिसे हम स्क्रैच से बनाने जा रहे हैं, फिर निम्न कमांड चलाकर रोल मिडलवेयर बनाने के लिए आगे बढ़ें
हैंडल विधि को निम्नानुसार संशोधित करें
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
हमने पैरामीटर जोड़ा $role
, और विधि के अंदर लाइन echo
आउटपुट को भूमिका का नाम लिखने के लिए।
अब एक विशिष्ट पथ के लिए रोलमिडलवेयर मिडलवेयर को पंजीकृत करते हैं
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
];
अब पैरामीटर के साथ मिडलवेयर का परीक्षण करने के लिए, हमें एक अनुरोध और प्रतिक्रिया बनाने की आवश्यकता है। प्रतिक्रिया का अनुकरण करने के लिए आइए नियंत्रक बनाएं जिसे हम टेस्टकंट्रोलर कहेंगे
php artisan make:controller TestController --plain
अभी निष्पादित आदेश फ़ोल्डर के अंदर एक नया नियंत्रक बनाएगा app/Http/TestController.php
, और विधि बदलें index
रेखा के साथ echo "<br>Test Controller.";
<?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.";
}
}
प्रतिक्रिया सेट अप करने के बाद, हम फ़ाइल को संपादित करके अनुरोध बनाते हैं routes.php
जोड़कर route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
इस बिंदु पर हम URL पर जाकर उदाहरण का प्रयास कर सकते हैं http://localhost:8000/role
और ब्राउज़र में हम दोनों को देखेंगे echo
Role editor
Test Controller
Il terminable Middleware
ब्राउज़र को प्रतिक्रिया भेजे जाने के बाद कुछ कार्य करता है। यह विधि के साथ एक मिडलवेयर बनाकर प्राप्त किया जा सकता है मिडलवेयर में समाप्त करें। Il terminable Middleware
के साथ पंजीकृत होना चाहिए middleware
वैश्विक। प्रक्रिया terminate
दो तर्क प्राप्त होंगे $ अनुरोध e $प्रतिक्रिया।
विधि Terminate
बनाया जाना चाहिए जैसा कि निम्नलिखित कोड में दिखाया गया है।
php artisan make:middleware 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.";
}
}
इस मामले में हमारे पास एक तरीका है handle
और एक तरीका terminate
दो मापदंडों के साथ $request
e $response
.
अब मिडलवेयर को रजिस्टर करते हैं
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
];
अब हमें प्रतिक्रिया अनुकरण करने के लिए नियंत्रक बनाने की जरूरत है
php artisan make:controller XYZController --plain
कक्षा की सामग्री को संशोधित करना
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
अब हमें फाइल को संपादित करने की जरूरत है routes/web.php
अनुरोध को सक्रिय करने के लिए आवश्यक मार्गों को जोड़ना
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
इस बिंदु पर हम URL पर जाकर उदाहरण का प्रयास कर सकते हैं http://localhost:8000/terminate
और ब्राउज़र में हम निम्नलिखित पंक्तियाँ देखेंगे
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
आप यह भी पसंद कर सकते हैं:
रंग भरने के माध्यम से बढ़िया मोटर कौशल विकसित करना बच्चों को लेखन जैसे अधिक जटिल कौशल के लिए तैयार करता है। रंग भरना…
नौसैनिक क्षेत्र एक सच्ची वैश्विक आर्थिक शक्ति है, जो 150 अरब के बाज़ार की ओर बढ़ चुका है...
पिछले सोमवार को, फाइनेंशियल टाइम्स ने OpenAI के साथ एक समझौते की घोषणा की। एफटी अपनी विश्व स्तरीय पत्रकारिता को लाइसेंस देता है...
लाखों लोग स्ट्रीमिंग सेवाओं के लिए मासिक सदस्यता शुल्क का भुगतान करते हैं। यह आम राय है कि आप...