Bu o deməkdir ki, istifadəçi (Laravel görünüşü) serverə (Laravel nəzarətçisi) sorğu göndərdikdə sorğu ara proqramdan keçəcək. Bu yolla ara proqram sorğunun autentifikasiya olunub-olunmadığını yoxlaya bilər:
Laravel sizə imkan verir defiautentifikasiya istisna olmaqla, müxtəlif tapşırıqları yerinə yetirmək üçün əlavə ara proqram təminatını bitirin və istifadə edin.
Laravel ara proqramları, məsələn, autentifikasiya və CSRF mühafizəsi kataloqda yerləşir app/Http/Middleware .
Buna görə də deyə bilərik ki, ara proqram təminatı http sorğu filtridir, onun vasitəsilə şərtləri yoxlamaq və hərəkətləri yerinə yetirmək mümkündür.
Yeni bir ara proqram yaratmaq üçün aşağıdakı əmri icra edirik:
php artisan make:middleware <name-of-middleware>
yaradırıq middleware
və biz buna deyirik CheckAge
, artisan
bizə belə cavab verəcək:
Yuxarıdakı pəncərə orta proqramın uğurla adı ilə yaradıldığını göstərir. CheckAge ".
CheckAge ara proqramının yaradılıb-yaradılmadığını görmək üçün app/Http/Middleware qovluğunda layihəyə keçin və siz yeni yaradılmış faylı görəcəksiniz.
Yeni yaradılmış faylda aşağıdakı kod var
<?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);
}
}
Ara proqram təminatından istifadə etmək üçün onu qeydiyyatdan keçirməliyik.
Laravel-də iki növ ara proqram var:
Middleware globale
Route Middleware
Il qlobal orta proqram proqramdan hər HTTP sorğusunda yerinə yetiriləcək Marşrut Orta Proqramı müəyyən bir yola təyin ediləcək. Orta proqram qeydiyyatdan keçə bilər app/Http/Kernel.php. Bu faylda iki xüsusiyyət var $orta proqram e $routeMiddleware . $middleware mülkiyyəti qlobal orta proqram təminatını və mülkiyyət hüququnu qeydiyyata almaq üçün istifadə olunur $routeMiddleware marşruta aid ara proqramın qeydiyyatı üçün istifadə olunur.
Qlobal orta proqram təminatını qeydiyyatdan keçirmək üçün sinfi $middleware mülkiyyətinin sonunda qeyd edin.
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,
];
Marşrut üçün xüsusi ara proqram təminatını qeydiyyatdan keçirmək üçün açar və dəyəri $routeMiddleware xassəsinə əlavə edin.
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,
];
yaratdıq CheckAge əvvəlki nümunədə. İndi biz bunu ara proqram marşrutu mülkiyyətində qeyd edə bilərik. Belə bir qeydiyyat üçün kod aşağıda göstərilmişdir.
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,
];
Parametrləri Middleware ilə də ötürə bilərik.
Məsələn, tətbiqinizdə istifadəçi, admin, super admin və s. kimi fərqli rollar varsa. və siz rola əsaslanaraq hərəkətin autentifikasiyasını etmək istəyirsinizsə, bunu parametrləri ara proqram vasitəsi ilə ötürməklə edə bilərsiniz.
Yaratdığımız ara proqram aşağıdakı funksiyanı ehtiva edir və biz arqumentdən sonra fərdi arqumentləri ötürə bilərik $növbəti .
public function handle($request, Closure $next)
{
return $next($request);
}
İndi gəlin sıfırdan yaratacağımız yeni ara proqrama rol parametrini təyin etməyə çalışaq, sonra aşağıdakı əmri işlədərək Rol Orta Proqramını yaratmağa davam edək.
Dəstəyin üsulunu aşağıdakı kimi dəyişdirin
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
parametrini əlavə etdik $role
, metodun içərisində isə xətt echo
çıxışa rolun adını yazmaq üçün.
İndi gəlin müəyyən bir yol üçün RoleMiddleware ara proqramını qeydiyyatdan keçirək
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,
];
İndi orta proqram təminatını parametrlə yoxlamaq üçün sorğu və cavab yaratmalıyıq. Cavabın simulyasiyası üçün TestController adlandıracağımız nəzarətçi yaradaq
php artisan make:controller TestController --plain
indicə yerinə yetirilən komanda qovluq daxilində yeni nəzarətçi yaradacaq app/Http/TestController.php
, və metodu dəyişdirin index
xətti ilə 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.";
}
}
Cavab təyin etdikdən sonra faylı redaktə edərək sorğunu qururuq routes.php
əlavə etməklə route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
bu nöqtədə URL-i ziyarət edərək nümunəni sınaya bilərik http://localhost:8000/role
və brauzerdə biz ikisini görəcəyik echo
Role editor
Test Controller
Il terminable Middleware
cavab brauzerə göndərildikdən sonra bəzi tapşırıqları yerinə yetirir. Buna metodla orta proqram yaratmaqla nail olmaq olar ara proqramda sonlandırın. Il terminable Middleware
ilə qeydiyyatdan keçməlidir middleware
qlobal. Metod terminate
iki arqument alacaq $ sorğu e $cavab.
Metod Terminate
aşağıdakı kodda göstərildiyi kimi yaradılmalıdır.
php artisan make:middleware TerminateMiddleware
Orta proqram yaradıldıqdan sonra app/Http/Middleware/TerminateMiddleware.php
kodu aşağıdakı kimi dəyişdirək
<?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.";
}
}
bu vəziyyətdə bir üsulumuz var handle
və bir üsul terminate
iki parametrlə $request
e $response
.
İndi Middleware-i qeydiyyatdan keçirək
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,
];
İndi cavabı simulyasiya etmək üçün nəzarətçi yaratmalıyıq
php artisan make:controller XYZController --plain
sinfin məzmununu dəyişdirmək
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
İndi faylı redaktə etməliyik routes/web.php
sorğunun aktivləşdirilməsi üçün lazım olan marşrutların əlavə edilməsi
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
bu nöqtədə URL-i ziyarət edərək nümunəni sınaya bilərik http://localhost:8000/terminate
və brauzerdə aşağıdakı sətirləri görəcəyik
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
İstəyə bilərsiniz:
Coveware by Veeam kiber qəsb hallarına cavab xidmətləri göstərməyə davam edəcək. Coveware məhkəmə və remediasiya imkanları təklif edəcək...
Proqnozlaşdırılan texniki xidmət zavodun idarə edilməsinə innovativ və proaktiv yanaşma ilə neft və qaz sektorunda inqilab edir.…
Böyük Britaniyanın CMA süni intellekt bazarında Big Tech-in davranışı ilə bağlı xəbərdarlıq edib. Orada…
Avropa İttifaqı tərəfindən binaların enerji səmərəliliyini artırmaq üçün tərtib edilən "Yaşıl Evlər" Fərmanı qanunvericilik prosesini yekunlaşdırdı ...