खोज…


परिचय

मिडलवेयर वे कक्षाएं हैं, जिन्हें एक या अधिक मार्ग के लिए सौंपा जा सकता है, और अनुरोध चक्र के शुरुआती या अंतिम चरणों में कार्रवाई करने के लिए उपयोग किया जाता है। हम उन पर विचार कर सकते हैं कि एक HTTP अनुरोध परतों की एक श्रृंखला के माध्यम से गुजरता है, जबकि इसे निष्पादित किया जाता है

टिप्पणियों

कंट्रोलर एक्शन कोड से पहले मिडिलवेयर निष्पादित करेगा; आवेदन के बाद अनुरोध के बाद एक "बाद" मिडलवेयर निष्पादित होता है

एक मिडिलवेयर को परिभाषित करना

एक नए मिडलवेयर को परिभाषित करने के लिए हमें मिडलवेयर क्लास बनाना होगा:

class AuthenticationMiddleware
{
    //this method will execute when the middleware will be triggered
    public function handle ( $request, Closure $next )
    {
        if ( ! Auth::user() )
        {
            return redirect('login');
        }

        return $next($request);
    }
}

फिर हमें मिडिलवेयर को पंजीकृत करना होगा: यदि मिडलवेयर को एप्लिकेशन के सभी मार्गों से बाँधना चाहिए, तो हमें इसे app/Http/Kernel.php के मिडलवेयर प्रॉपर्टी में जोड़ना चाहिए:

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\AuthenticationMiddleware::class
];

यदि हम केवल मिडलवेयर को कुछ मार्गों से जोड़ना चाहते हैं, तो हम इसे $routeMiddleware जोड़ सकते हैं

//register the middleware as a 'route middleware' giving it the name of 'custom_auth'
protected $routeMiddleware = [
    'custom_auth' => \App\Http\Middleware\AuthenticationMiddleware::class
];

और फिर इसे इस तरह एकल मार्गों से बांधें:

//bind the middleware to the admin_page route, so that it will be executed for that route
Route::get('admin_page', 'AdminController@index')->middleware('custom_auth');

मिडिलवेयर के बाद बनाम

मिडलवेयर से पहले "उदाहरण" इस प्रकार होगा:

<?php

namespace App\Http\Middleware;

use Closure;

class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
        // Perform action

        return $next($request);
    }
}

जबकि "के बाद" मिडलवेयर इस तरह दिखाई देगा:

<?php

namespace App\Http\Middleware;

use Closure;

class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // Perform action

        return $response;
    }
}

प्रमुख अंतर यह है कि $request पैरामीटर को कैसे संभाला जाता है। कार्रवाई से पहले प्रदर्शन कर रहे हैं, तो $next($request) जबकि बुला कि नियंत्रक कोड से पहले क्या होगा निष्पादित किया जाता है $next($request) पहले के बाद नियंत्रक कोड निष्पादित होने पर कार्रवाइयां की जा रही करने के लिए नेतृत्व करेंगे।

रूट मिडिलवेयर

किसी भी मिडलवेयर को app/Http/Kernel.php routeMiddleware में routeMiddleware रूप में पंजीकृत किया जा सकता है।

मिडलवेयर को असाइन करने के कुछ अलग तरीके हैं, लेकिन वे सभी एक ही करते हैं।

Route::get('/admin', 'AdminController@index')->middleware('auth', 'admin');
Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => 'auth']);
Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => ['auth', 'admin']);

उपरोक्त सभी उदाहरणों में, आप पूरी तरह से योग्य वर्ग नामों को मिडलवेयर के रूप में पास कर सकते हैं, भले ही वह रूट मिडलवेयर के रूप में पंजीकृत हो।

use App\Http\Middleware\CheckAdmin;
Route::get('/admin', 'AdminController@index')->middleware(CheckAdmin::class);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow