Бұл дегеніміз, пайдаланушы (Laravel көрінісі) серверге (Laravel контроллері) сұраныс жасағанда, сұрау аралық бағдарлама арқылы өтеді. Осылайша, аралық бағдарлама сұраудың аутентификацияланғанын немесе расталмағанын тексере алады:
Laravel сізге мүмкіндік береді defiаутентификациядан басқа әртүрлі тапсырмаларды орындау үшін қосымша аралық бағдарламалық құралды аяқтаңыз және пайдаланыңыз.
Түпнұсқалық растама және CSRF қорғау сияқты Laravel аралық бағдарламалары каталогта орналасқан app/Http/Орташа бағдарламалық құрал .
Демек, аралық бағдарламаны http сұрау сүзгісі деп айта аламыз, ол арқылы шарттарды тексеруге және әрекеттерді орындауға болады.
Жаңа аралық бағдарламалық құралды жасау үшін келесі пәрменді орындаймыз:
php artisan make:middleware <name-of-middleware>
Біз жасаймыз middleware
және біз оны атаймыз CheckAge
, artisan
бізге былай жауап береді:
Жоғарыдағы терезе аралық бағдарламалық құрал атымен сәтті жасалғанын көрсетеді » CheckAge «.
CheckAge аралық бағдарламалық құралының жасалғанын немесе жасалмағанын көру үшін app/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. Бұл файл екі сипаттарды қамтиды $ортаңғы бағдарлама 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 $жауап.
Әдіс 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
Сізге де ұнай алады:
Veeam ұсынған Coveware кибербопсалау оқиғаларына жауап беру қызметтерін көрсетуді жалғастырады. Coveware криминалистикалық және қалпына келтіру мүмкіндіктерін ұсынады ...
Болжалды техникалық қызмет көрсету зауытты басқаруға инновациялық және белсенді көзқараспен мұнай және газ секторында төңкеріс жасайды.…
Ұлыбританияның CMA жасанды интеллект нарығындағы Big Tech әрекеті туралы ескерту жасады. Ана жерде…
Ғимараттардың энергия тиімділігін арттыру үшін Еуропалық Одақ тұжырымдаған «Жасыл үйлер» жарлығы өзінің заң шығару процесін аяқтады ...