అంటే వినియోగదారు (లారావెల్ వీక్షణ) సర్వర్కు (లారావెల్ కంట్రోలర్) అభ్యర్థన చేసినప్పుడు, అభ్యర్థన మిడిల్వేర్ ద్వారా వెళుతుంది. ఈ విధంగా మిడిల్వేర్ అభ్యర్థన ప్రామాణీకరించబడిందో లేదో తనిఖీ చేయగలదు:
లారావెల్ మిమ్మల్ని అనుమతిస్తుంది defiప్రామాణీకరణ మినహా వివిధ రకాల పనులను పూర్తి చేయడానికి మరియు అదనపు మిడిల్వేర్ను ఉపయోగించండి.
ప్రామాణీకరణ మరియు CSRF రక్షణ వంటి లారావెల్ మిడిల్వేర్లు డైరెక్టరీలో ఉన్నాయి యాప్/Http/మిడిల్వేర్ .
అందువల్ల మిడిల్వేర్ అనేది http అభ్యర్థన ఫిల్టర్ అని మేము చెప్పగలం, దీని ద్వారా షరతులను ధృవీకరించడం మరియు చర్యలను చేయడం సాధ్యపడుతుంది.
కొత్త మిడిల్వేర్ను సృష్టించడానికి మేము కింది ఆదేశాన్ని అమలు చేస్తాము:
php artisan make:middleware <name-of-middleware>
మేము సృష్టిస్తాము middleware
మరియు మేము దానిని పిలుస్తాము CheckAge
, artisan
ఈ క్రింది విధంగా మాకు సమాధానం ఇస్తారు:
పై విండో మిడిల్వేర్ పేరుతో విజయవంతంగా సృష్టించబడిందని చూపిస్తుంది ” తనిఖీ వయస్సు ".
CheckAge మిడిల్వేర్ సృష్టించబడిందో లేదో చూడటానికి, యాప్/Http/మిడిల్వేర్ ఫోల్డర్లోని ప్రాజెక్ట్కి వెళ్లండి మరియు మీరు కొత్తగా సృష్టించిన ఫైల్ని చూస్తారు
కొత్తగా సృష్టించిన ఫైల్ కింది కోడ్ను కలిగి ఉంది
<?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 అభ్యర్థనపై అమలు చేయబడుతుంది, అయితే రూట్ మిడిల్వేర్ ఒక నిర్దిష్ట మార్గానికి కేటాయించబడుతుంది. మిడిల్వేర్ వద్ద నమోదు చేసుకోవచ్చు యాప్/Http/Kernel.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
పాత్ర పేరు అవుట్పుట్ని వ్రాయడానికి.
ఇప్పుడు ఒక నిర్దిష్ట మార్గం కోసం RoleMiddleware మిడిల్వేర్ను నమోదు చేద్దాం
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
మీరు కూడా ఇష్టపడవచ్చు:
లారావెల్, దాని సొగసైన వాక్యనిర్మాణం మరియు శక్తివంతమైన లక్షణాలకు ప్రసిద్ధి చెందింది, ఇది మాడ్యులర్ ఆర్కిటెక్చర్కు బలమైన పునాదిని కూడా అందిస్తుంది. అక్కడ…
సిస్కో మరియు స్ప్లంక్ కస్టమర్లు భవిష్యత్తులో సెక్యూరిటీ ఆపరేషన్స్ సెంటర్ (SOC)కి తమ ప్రయాణాన్ని వేగవంతం చేయడంలో సహాయపడుతున్నాయి…
గత రెండేళ్లుగా రాన్సమ్వేర్ వార్తల్లో ఆధిపత్యం చెలాయిస్తోంది. దాడులు జరుగుతాయని చాలా మందికి బాగా తెలుసు...
ఆపిల్ విజన్ ప్రో కమర్షియల్ వ్యూయర్ని ఉపయోగించి ఆప్తాల్మోప్లాస్టీ ఆపరేషన్ కాటానియా పాలిక్లినిక్లో నిర్వహించబడింది…
కలరింగ్ ద్వారా చక్కటి మోటారు నైపుణ్యాలను పెంపొందించుకోవడం, రాయడం వంటి క్లిష్టమైన నైపుణ్యాల కోసం పిల్లలను సిద్ధం చేస్తుంది. రంగు వేయడానికి…
నావికా రంగం నిజమైన ప్రపంచ ఆర్థిక శక్తి, ఇది 150 బిలియన్ల మార్కెట్ వైపు నావిగేట్ చేసింది...
గత సోమవారం, ఫైనాన్షియల్ టైమ్స్ OpenAIతో ఒప్పందాన్ని ప్రకటించింది. FT దాని ప్రపంచ స్థాయి జర్నలిజానికి లైసెన్స్ ఇస్తుంది…
మిలియన్ల మంది ప్రజలు స్ట్రీమింగ్ సేవలకు చెల్లిస్తారు, నెలవారీ సభ్యత్వ రుసుములను చెల్లిస్తారు. మీరు అనేది సాధారణ అభిప్రాయం…