Бул колдонуучу (Laravel көрүнүшү) серверге (Laravel контроллери) суроо-талапты жасаганда, сурам ортомчу программа аркылуу өтөт дегенди билдирет. Ошентип, орто программа сурамдын аныктыгын текшере алат:
Laravel сизге мүмкүнчүлүк берет defiаныктыгын текшерүүдөн башка ар кандай тапшырмаларды аткаруу үчүн кошумча орто программаны бүтүрүңүз жана колдонуңуз.
Аутентификация жана CSRF коргоо сыяктуу Laravel ортомчу программалары каталогдо жайгашкан app/Http/Middleware .
Демек, орто программалык камсыздоону http суроо чыпкасы деп айта алабыз, ал аркылуу шарттарды текшерип, аракеттерди жасоого болот.
Жаңы орто программаны түзүү үчүн биз төмөнкү буйрукту аткарабыз:
php artisan make:middleware <name-of-middleware>
Биз түзөбүз middleware
жана биз аны чакырабыз CheckAge
, artisan
бизге төмөнкүдөй жооп берет:
Жогорудагы терезе орто программанын ийгиликтүү аталышы менен түзүлгөнүн көрсөтүп турат. CheckAge ".
CheckAge орто программасы түзүлгөн же түзүлбөгөнүн көрүү үчүн, колдонмо/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);
}
}
Орточо программаны колдонуу үчүн биз аны катташыбыз керек.
Laravelде орто программанын эки түрү бар:
Middleware globale
Route Middleware
Il глобалдык орто программа колдонмонун ар бир HTTP сурамында аткарылат Маршруттук орто программа белгилүү бир жолго дайындалат. Орточо программаны каттоодон өтсө болот app/Http/Kernel.php. Бул файл эки касиетти камтыйт $midleware 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,
];
Биз түздүк CheckAge мурунку мисалда. Эми муну орто программалык маршруттун касиетине каттай алабыз. Мындай каттоо коду төмөндө көрсөтүлгөн.
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,
];
Биз ошондой эле Middleware менен параметрлерди өткөрө алабыз.
Мисалы, эгер сиздин колдонмоңузда колдонуучу, администратор, супер администратор ж. жана сиз рольдун негизинде иш-аракеттин аныктыгын текшергиңиз келсе, муну орто программа менен параметрлерди өткөрүү менен жасай аласыз.
Биз түзгөн орто программа төмөнкү функцияны камтыйт жана биз аргументтен кийин ыңгайлаштырылган аргументтерди өткөрө алабыз $кийинки .
public function handle($request, Closure $next)
{
return $next($request);
}
Эми биз нөлдөн баштап түзө турган жаңы ортолук программага роль параметрин коюуга аракет кылалы, андан кийин төмөнкү буйрукту аткаруу менен Role Middleware түзүүгө киришели
Колдоо ыкмасын төмөнкүдөй өзгөртүңүз
<?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 $response.
Ыкма 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
Сизге дагы жагышы мүмкүн:
Аскер-деңиз сектору 150 миллиарддык рынокту көздөй багыт алган чыныгы дүйнөлүк экономикалык держава...
Өткөн дүйшөмбүдө Financial Times OpenAI менен келишим түзгөнүн жарыялады. FT өзүнүн дүйнөлүк деңгээлдеги журналистикасына лицензия берет…
Миллиондогон адамдар ай сайын абоненттик төлөмдү төлөп, агымдык кызматтар үчүн төлөшөт. Сиз деген жалпы пикир…
Veeam тарабынан Coveware кибер опузалап инциденттерге жооп берүү кызматтарын көрсөтүүнү улантат. Coveware криминалистика жана ремедиация мүмкүнчүлүктөрүн сунуштайт ...