వ్యాసాలు

లారావెల్ మిడిల్‌వేర్ ఎలా పనిచేస్తుంది

లారావెల్ మిడిల్‌వేర్ అనేది వినియోగదారు అభ్యర్థన మరియు అప్లికేషన్ యొక్క ప్రతిస్పందన మధ్య జోక్యం చేసుకునే ఇంటర్మీడియట్ అప్లికేషన్ లేయర్.

అంటే వినియోగదారు (లారావెల్ వీక్షణ) సర్వర్‌కు (లారావెల్ కంట్రోలర్) అభ్యర్థన చేసినప్పుడు, అభ్యర్థన మిడిల్‌వేర్ ద్వారా వెళుతుంది. ఈ విధంగా మిడిల్‌వేర్ అభ్యర్థన ప్రామాణీకరించబడిందో లేదో తనిఖీ చేయగలదు: 

  • వినియోగదారు అభ్యర్థన ప్రమాణీకరించబడితే, అభ్యర్థన బ్యాకెండ్‌కు పంపబడుతుంది;
  • వినియోగదారు అభ్యర్థన ప్రమాణీకరించబడకపోతే, మిడిల్‌వేర్ వినియోగదారుని లాగిన్ స్క్రీన్‌కు దారి మళ్లిస్తుంది.

లారావెల్ మిమ్మల్ని అనుమతిస్తుంది 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

మీరు కూడా ఇష్టపడవచ్చు:

ఇన్నోవేషన్ వార్తాలేఖ
ఆవిష్కరణకు సంబంధించిన అత్యంత ముఖ్యమైన వార్తలను మిస్ చేయవద్దు. ఇమెయిల్ ద్వారా వాటిని స్వీకరించడానికి సైన్ అప్ చేయండి.

ఇటీవల కథనాలు

లారావెల్ యొక్క మాడ్యులర్ ఆర్కిటెక్చర్‌ను అన్వేషించడం

లారావెల్, దాని సొగసైన వాక్యనిర్మాణం మరియు శక్తివంతమైన లక్షణాలకు ప్రసిద్ధి చెందింది, ఇది మాడ్యులర్ ఆర్కిటెక్చర్‌కు బలమైన పునాదిని కూడా అందిస్తుంది. అక్కడ…

మే 29 మే

సిస్కో హైపర్‌షీల్డ్ మరియు స్ప్లంక్ యొక్క సముపార్జన భద్రత యొక్క కొత్త శకం ప్రారంభమవుతుంది

సిస్కో మరియు స్ప్లంక్ కస్టమర్‌లు భవిష్యత్తులో సెక్యూరిటీ ఆపరేషన్స్ సెంటర్ (SOC)కి తమ ప్రయాణాన్ని వేగవంతం చేయడంలో సహాయపడుతున్నాయి…

మే 29 మే

ఆర్థిక వైపుకు మించి: ransomware యొక్క అస్పష్టమైన ధర

గత రెండేళ్లుగా రాన్సమ్‌వేర్ వార్తల్లో ఆధిపత్యం చెలాయిస్తోంది. దాడులు జరుగుతాయని చాలా మందికి బాగా తెలుసు...

మే 29 మే

ఆగ్మెంటెడ్ రియాలిటీలో వినూత్న జోక్యం, కాటానియా పాలిక్లినిక్‌లో ఆపిల్ వ్యూయర్‌తో

ఆపిల్ విజన్ ప్రో కమర్షియల్ వ్యూయర్‌ని ఉపయోగించి ఆప్తాల్మోప్లాస్టీ ఆపరేషన్ కాటానియా పాలిక్లినిక్‌లో నిర్వహించబడింది…

మే 29 మే

పిల్లల కోసం పేజీలను కలరింగ్ చేయడం వల్ల కలిగే ప్రయోజనాలు - అన్ని వయసుల వారికి మేజిక్ ప్రపంచం

కలరింగ్ ద్వారా చక్కటి మోటారు నైపుణ్యాలను పెంపొందించుకోవడం, రాయడం వంటి క్లిష్టమైన నైపుణ్యాల కోసం పిల్లలను సిద్ధం చేస్తుంది. రంగు వేయడానికి…

మే 29 మే

భవిష్యత్తు ఇక్కడ ఉంది: షిప్పింగ్ పరిశ్రమ గ్లోబల్ ఎకానమీని ఎలా విప్లవాత్మకంగా మారుస్తోంది

నావికా రంగం నిజమైన ప్రపంచ ఆర్థిక శక్తి, ఇది 150 బిలియన్ల మార్కెట్ వైపు నావిగేట్ చేసింది...

మే 29 మే

ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ ద్వారా ప్రాసెస్ చేయబడిన సమాచార ప్రవాహాన్ని నియంత్రించడానికి ప్రచురణకర్తలు మరియు OpenAI ఒప్పందాలపై సంతకం చేస్తారు

గత సోమవారం, ఫైనాన్షియల్ టైమ్స్ OpenAIతో ఒప్పందాన్ని ప్రకటించింది. FT దాని ప్రపంచ స్థాయి జర్నలిజానికి లైసెన్స్ ఇస్తుంది…

ఏప్రిల్ 29 మంగళవారం

ఆన్‌లైన్ చెల్లింపులు: స్ట్రీమింగ్ సేవలు మిమ్మల్ని ఎప్పటికీ చెల్లించేలా చేయడం ఎలాగో ఇక్కడ ఉంది

మిలియన్ల మంది ప్రజలు స్ట్రీమింగ్ సేవలకు చెల్లిస్తారు, నెలవారీ సభ్యత్వ రుసుములను చెల్లిస్తారు. మీరు అనేది సాధారణ అభిప్రాయం…

ఏప్రిల్ 29 మంగళవారం

మీ భాషలో ఇన్నోవేషన్ చదవండి

ఇన్నోవేషన్ వార్తాలేఖ
ఆవిష్కరణకు సంబంధించిన అత్యంత ముఖ్యమైన వార్తలను మిస్ చేయవద్దు. ఇమెయిల్ ద్వారా వాటిని స్వీకరించడానికి సైన్ అప్ చేయండి.

మాకు అనుసరించండి