यसको मतलब यो हो कि जब प्रयोगकर्ता (Laravel दृश्य) ले सर्भर (Laravel नियन्त्रक) लाई अनुरोध गर्दछ, अनुरोध मिडलवेयर मार्फत जान्छ। यस तरीकाले मिडलवेयरले जाँच गर्न सक्छ कि अनुरोध प्रमाणीकृत छ वा छैन:
Laravel ले तपाईंलाई अनुमति दिन्छ defiसमाप्त गर्नुहोस् र प्रमाणीकरण बाहेक विभिन्न कार्यहरू गर्न थप मिडलवेयर प्रयोग गर्नुहोस्।
Laravel मिडलवेयरहरू, जस्तै प्रमाणीकरण र CSRF सुरक्षा, निर्देशिकामा अवस्थित छन् एप/Http/मिडलवेयर .
त्यसकारण हामी यो भन्न सक्छौं कि मिडलवेयर एक http अनुरोध फिल्टर हो, जसको माध्यमबाट सर्तहरू प्रमाणित गर्न र कार्यहरू गर्न सम्भव छ।
नयाँ मिडलवेयर सिर्जना गर्न हामी निम्न आदेश चलाउँछौं:
php artisan make:middleware <name-of-middleware>
हामी सिर्जना गर्छौं middleware
र हामी यसलाई कल गर्छौं CheckAge
, artisan
निम्नानुसार हामीलाई जवाफ दिनेछ:
माथिको विन्डोले देखाउँछ कि मिडलवेयर सफलतापूर्वक नामको साथ सिर्जना गरिएको छ। उमेर जाँच गर्नुहोस् "।
CheckAge मिडलवेयर सिर्जना गरिएको छ वा छैन भनेर हेर्नको लागि, एप/Http/Middleware फोल्डरमा परियोजनामा जानुहोस्, र तपाईंले नयाँ सिर्जना गरिएको फाइल देख्नुहुनेछ।
नयाँ सिर्जना गरिएको फाइलमा निम्न कोड छ
<?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);
}
}
मिडलवेयर प्रयोग गर्न, हामीले यसलाई दर्ता गर्न आवश्यक छ।
Laravel मा दुई प्रकारका मिडलवेयर छन्:
Middleware globale
Route Middleware
Il विश्वव्यापी मिडलवेयर अनुप्रयोगबाट प्रत्येक HTTP अनुरोधमा कार्यान्वयन गरिनेछ, जबकि रुट मिडलवेयर निश्चित मार्गमा तोकिनेछ। मिडलवेयर मा दर्ता गर्न सकिन्छ app/Http/Kernel.php। यो फाइलमा दुई गुणहरू छन् $midleware e $routeMiddleware . $middleware सम्पत्ति विश्वव्यापी मिडलवेयर र स्वामित्व दर्ता गर्न प्रयोग गरिन्छ $routeMiddleware रूट-विशिष्ट मिडलवेयर दर्ता गर्न प्रयोग गरिन्छ।
ग्लोबल मिडलवेयर दर्ता गर्नको लागि, $middleware सम्पत्तीको अन्त्यमा वर्ग सूचीबद्ध गर्नुहोस्।
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,
];
अब प्यारामिटरको साथ मिडलवेयर परीक्षण गर्न, हामीले अनुरोध र प्रतिक्रिया सिर्जना गर्न आवश्यक छ। प्रतिक्रिया अनुकरण गर्न नियन्त्रक सिर्जना गरौं जसलाई हामी TestController कल गर्नेछौं
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 सँग सम्झौताको घोषणा गर्यो। FT ले आफ्नो विश्व स्तरीय पत्रकारिता लाई लाइसेन्स...
लाखौं मानिसहरूले स्ट्रिमिङ सेवाहरूको लागि भुक्तानी गर्छन्, मासिक सदस्यता शुल्क तिर्छन्। यो आम धारणा छ कि तपाईं…
Veeam द्वारा Coveware ले साइबर जबरजस्ती घटना प्रतिक्रिया सेवाहरू प्रदान गर्न जारी राख्नेछ। Coveware ले फोरेन्सिक र उपचार क्षमताहरू प्रदान गर्दछ ...