खोज…
परिचय
टिप्पणियों
कंट्रोलर एक्शन कोड से पहले मिडिलवेयर निष्पादित करेगा; आवेदन के बाद अनुरोध के बाद एक "बाद" मिडलवेयर निष्पादित होता है
एक मिडिलवेयर को परिभाषित करना
एक नए मिडलवेयर को परिभाषित करने के लिए हमें मिडलवेयर क्लास बनाना होगा:
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);