ان جو مطلب اهو آهي ته جڏهن صارف (Laravel view) سرور (Laravel ڪنٽرولر) کي درخواست ڪري ٿو، درخواست مڊل ويئر ذريعي ٿيندي. هن طريقي سان مڊل ويئر چيڪ ڪري سگهي ٿو ته درخواست جي تصديق ٿيل آهي يا نه:
Laravel توهان کي اجازت ڏئي ٿو defiختم ڪريو ۽ اضافي مڊل ويئر استعمال ڪريو مختلف ڪمن کي انجام ڏيڻ لاءِ تصديق کان سواءِ.
Laravel Middlewares، جيئن ته تصديق ۽ CSRF تحفظ، ڊاريڪٽري ۾ واقع آهن ايپ/Http/Midleware .
تنهن ڪري اسان اهو چئي سگهون ٿا ته مڊل ويئر هڪ http درخواست فلٽر آهي، جنهن جي ذريعي اهو ممڪن آهي ته حالتن جي تصديق ڪرڻ ۽ ڪارناما انجام ڏيو.
ھڪڙو نئون مڊل ويئر ٺاھڻ لاءِ اسان ھيٺ ڏنل حڪم هلائيندا آھيون:
php artisan make:middleware <name-of-middleware>
اسان ٺاهيندا آهيون middleware
۽ اسان ان کي سڏيندا آهيون CheckAge
, artisan
اسان کي هيٺ ڏنل جواب ڏيندو:
مٿي ڏنل ونڊو ڏيکاري ٿو ته مڊل ويئر ڪاميابي سان نالي سان ٺاهيو ويو آهي ” عمر چيڪ ڪريو ".
ڏسڻ لاءِ ته CheckAge Middleware ٺهيل آهي يا نه، ايپ/Http/Middleware فولڊر ۾ پروجيڪٽ ڏانهن وڃو، ۽ توهان کي نئين ٺاهيل فائل نظر ايندي.
نئين ٺاهيل فائل ھيٺ ڏنل ڪوڊ آھي
<?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 استعمال ڪرڻ لاء، اسان کي ان کي رجسٽر ڪرڻ جي ضرورت آهي.
Laravel ۾ مڊل ويئر جا ٻه قسم آهن:
Middleware globale
Route Middleware
Il عالمي مڊل ويئر ايپليڪيشن مان هر HTTP درخواست تي عمل ڪيو ويندو، جڏهن ته رستو مڊل ويئر هڪ مخصوص رستي تي مقرر ڪيو ويندو. Middleware تي رجسٽر ٿي سگھي ٿو app/Http/Kernel.php. ھي فائل ٻن ملڪيتن تي مشتمل آھي $ وچين سامان e $routeMiddleware . $middleware ملڪيت عالمي مڊل ويئر ۽ ملڪيت کي رجسٽر ڪرڻ لاءِ استعمال ڪيو ويندو آهي $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 Middleware کي مخصوص رستي لاءِ
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
.
هاڻي اچو ته رجسٽر ڪريون Middleware
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
توهان شايد شايد پسند ڪري سگھو ٿا:
ڪيٽينيا پولي ڪلينڪ ۾ ايپل ويزن پرو ڪمرشل ناظر استعمال ڪندي هڪ چشمي جو آپريشن ڪيو ويو…
رنگ سازي ذريعي سٺي موٽر صلاحيتن کي ترقي ڪرڻ ٻارن کي وڌيڪ پيچيده صلاحيتن لاء تيار ڪري ٿو جهڙوڪ لکڻ. رنگ ڏيڻ…
بحري شعبي هڪ حقيقي عالمي معاشي طاقت آهي، جيڪا 150 بلين مارڪيٽ جي طرف نيويگيٽ ڪئي آهي ...
گذريل سومر، فنانشل ٽائمز OpenAI سان هڪ ڊيل جو اعلان ڪيو. ايف ٽي پنهنجي عالمي سطح جي صحافت کي لائسنس ڏئي ٿو ...