دا پدې مانا ده چې کله کاروونکي (Laravel view) سرور (Laravel کنټرولر) ته غوښتنه کوي، غوښتنه به د منځني وییر له لارې تیریږي. په دې توګه منځنی وییر کولی شي وګوري چې ایا غوښتنه تایید شوې که نه:
Laravel تاسو ته اجازه درکوي defiبشپړ کړئ او د تصدیق کولو پرته د مختلف کارونو ترسره کولو لپاره اضافي میډرویر وکاروئ.
Laravel Middlewares، لکه تصدیق او د CSRF محافظت، په لارښود کې موقعیت لري اپلیکیشن/Http/میډل ویئر .
له همدې امله موږ کولی شو ووایو چې مینځنی ویر د 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 globale
Route Middleware
Il نړیوال منځنی وسایل د غوښتنلیک څخه په هر HTTP غوښتنه کې به اجرا شي، پداسې حال کې چې د مینځلو لار یوې ځانګړې لارې ته به وګمارل شي. میډیل ویئر کې راجستر کیدی شي app/Http/Kernel.php. دا فایل دوه ملکیتونه لري $منځنی سامان e $routeMiddleware . د $ منځنۍ وسایطو ملکیت د نړیوال منځنی وسایطو او ملکیت ثبتولو لپاره کارول کیږي $routeMiddleware د روټ ځانګړي منځني وسایط ثبتولو لپاره کارول کیږي.
د نړیوال مینځلویر راجستر کولو لپاره، ټولګي د $midleware ملکیت په پای کې لیست کړئ.
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,
];
اوس د پیرامیټر سره د مینځلویر ازموینې لپاره ، موږ اړتیا لرو غوښتنه او ځواب رامینځته کړو. د ځواب سمولو لپاره راځئ چې کنټرولر جوړ کړو چې موږ به یې ټیسټ کنټرولر ووایو
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
تاسو ممکن دا هم خوښ کړئ:
د Veeam لخوا Coveware به د سایبر غصب پیښو غبرګون خدماتو چمتو کولو ته دوام ورکړي. Coveware به د عدلي او درملنې وړتیاوې وړاندې کړي ...
د وړاندوینې ساتنه د تیلو او ګاز سکتور کې انقلاب رامینځته کوي ، د نبات مدیریت لپاره د نوښت او فعال چلند سره.
د انګلستان CMA د مصنوعي استخباراتو په بازار کې د لوی ټیک چلند په اړه خبرداری خپور کړی. هلته…
د "شنو خونو" فرمان، چې د اروپایي اتحادیې لخوا د ودانیو د انرژۍ موثریت لوړولو لپاره جوړ شوی، خپل مقننه پروسه پای ته رسولې ده ...