लेख

Laravel Middleware ते कसे कार्य करते

Laravel मिडलवेअर हा एक इंटरमीडिएट ऍप्लिकेशन स्तर आहे जो वापरकर्त्याची विनंती आणि ऍप्लिकेशनच्या प्रतिसादामध्ये हस्तक्षेप करतो.

याचा अर्थ असा की जेव्हा वापरकर्ता (Laravel view) सर्व्हरला (Laravel controller) विनंती करतो, तेव्हा विनंती मिडलवेअरमधून जाईल. अशा प्रकारे मिडलवेअर विनंती प्रमाणीकृत आहे की नाही हे तपासू शकते: 

  • वापरकर्त्याची विनंती प्रमाणीकृत असल्यास, विनंती बॅकएंडवर पाठविली जाते;
  • वापरकर्त्याची विनंती अप्रमाणित असल्यास, मिडलवेअर वापरकर्त्याला लॉगिन स्क्रीनवर पुनर्निर्देशित करेल.

Laravel तुम्हाला परवानगी देतो defiपूर्ण करा आणि प्रमाणीकरण वगळता विविध कार्ये करण्यासाठी अतिरिक्त मिडलवेअर वापरा. 

Laravel Middlewares, जसे की प्रमाणीकरण आणि CSRF संरक्षण, निर्देशिकेत स्थित आहेत अॅप/Http/मिडलवेअर .

म्हणून आम्ही असे म्हणू शकतो की मिडलवेअर हे HTTP विनंती फिल्टर आहे, ज्याद्वारे परिस्थिती सत्यापित करणे आणि क्रिया करणे शक्य आहे.

मिडलवेअर तयार करणे

नवीन मिडलवेअर तयार करण्यासाठी आम्ही खालील कमांड चालवतो:

php artisan make:middleware <name-of-middleware>

आम्ही तयार करतो middleware आणि आम्ही त्याला कॉल करतो CheckAge, artisan आम्हाला खालीलप्रमाणे उत्तर देईल:

वरील विंडो दर्शवते की मिडलवेअर नावाने यशस्वीरित्या तयार केले गेले आहे ” वय तपासा ".

चेकएज मिडलवेअर तयार केले आहे की नाही हे पाहण्यासाठी, अॅप/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);
    }
}

मिडलवेअर वापरा

मिडलवेअर वापरण्यासाठी, आम्हाला ते नोंदणीकृत करावे लागेल.

Laravel मध्ये मिडलवेअरचे दोन प्रकार आहेत:

  • Middleware globale
  • Route Middleware

Il जागतिक मिडलवेअर अनुप्रयोगातील प्रत्येक HTTP विनंतीवर कार्यान्वित केले जाईल, तर मार्ग मिडलवेअर विशिष्ट मार्गावर नियुक्त केले जाईल. मिडलवेअरवर नोंदणी केली जाऊ शकते app/Http/Kernel.php. या फाइलमध्ये दोन गुणधर्म आहेत $midleware e $routeMiddleware . $midleware मालमत्ता जागतिक मिडलवेअर आणि मालकी नोंदणी करण्यासाठी वापरले जाते $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 आउटपुटमध्ये भूमिकेचे नाव लिहिण्यासाठी.

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

आता विशिष्ट मार्गासाठी 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 एप्रिल 2024

Veeam मध्ये रॅन्समवेअरसाठी सर्वात व्यापक समर्थन, संरक्षणापासून प्रतिसाद आणि पुनर्प्राप्तीपर्यंत वैशिष्ट्ये आहेत

Veeam द्वारे Coveware सायबर खंडणी घटना प्रतिसाद सेवा प्रदान करणे सुरू ठेवेल. Coveware फॉरेन्सिक आणि उपाय क्षमता प्रदान करेल…

23 एप्रिल 2024

हरित आणि डिजिटल क्रांती: भविष्यसूचक देखभाल तेल आणि वायू उद्योगात कशी बदल घडवत आहे

वनस्पती व्यवस्थापनासाठी नाविन्यपूर्ण आणि सक्रिय दृष्टीकोनसह, भविष्यसूचक देखभाल तेल आणि वायू क्षेत्रात क्रांती घडवत आहे.…

22 एप्रिल 2024

यूके अँटिट्रस्ट रेग्युलेटरने GenAI वर BigTech अलार्म वाढवला

UK CMA ने आर्टिफिशियल इंटेलिजन्स मार्केटमध्ये बिग टेकच्या वर्तनाबद्दल चेतावणी जारी केली आहे. तेथे…

18 एप्रिल 2024

तुमच्या भाषेत इनोव्हेशन वाचा

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

आमचे अनुसरण करा