Wannan yana nufin cewa lokacin da mai amfani (Laravel view) ya yi buƙatu ga uwar garken (Laravel controller), buƙatar za ta wuce ta tsakiya. Ta wannan hanyar middleware na iya bincika idan buƙatar ta tabbata ko a'a:
Laravel yana ba ku damar defigama kuma yi amfani da ƙarin na'urorin tsakiya don aiwatar da ayyuka iri-iri banda tantancewa.
Laravel middlewares, kamar tantancewa da kariyar CSRF, suna cikin kundin adireshi app/Http/Middleware .
Don haka zamu iya cewa middleware shine tace buƙatun http, ta inda za'a iya tabbatar da yanayi da aiwatar da ayyuka.
Don ƙirƙirar sabon middleware muna gudanar da umarni mai zuwa:
php artisan make:middleware <name-of-middleware>
Muna ƙirƙirar middleware
kuma muna kiransa CheckAge
, artisan
zai amsa mana kamar haka:
Tagan da ke sama yana nuna cewa an yi nasarar ƙirƙirar middleware tare da sunan ” Duba Shekaru ".
Don ganin ko an ƙirƙiri na CheckAge ko a'a, je zuwa aikin a cikin babban fayil ɗin app/Http/Middleware, kuma za ku ga sabon fayil ɗin da aka ƙirƙira.
Sabuwar fayil ɗin da aka ƙirƙira yana da lambar mai zuwa
<?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);
}
}
Don amfani da middleware, muna buƙatar yin rajistar shi.
Akwai nau'ikan tsakiya guda biyu a cikin Laravel:
Middleware globale
Route Middleware
Il duniya middleware za a aiwatar da kowane buƙatun HTTP daga aikace-aikacen, yayin da Hanyar Middleware za a sanya wa wata hanya ta musamman. Ana iya yin rijistar Middleware a app/Http/Kernel.php. Wannan fayil ɗin ya ƙunshi kaddarori biyu $middleware e $ RouteMiddleware . Dukiyar $midlware ana amfani da shi don yin rijistar middleware na duniya da ikon mallaka $ RouteMiddleware ana amfani da shi don yin rajistar takamaiman hanyoyin tsakiya.
Don yin rijistar middleware na duniya, jera ajin a ƙarshen kadarar $middware.
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,
];
Don yin rajistar takamaiman hanyar tsakiya, ƙara maɓalli da ƙima zuwa kadarar $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,
];
Mun halitta Duba Shekaru a cikin misalin da ya gabata. Yanzu za mu iya yin rajistar wannan a cikin kayan hanyar tsakiya. Ana nuna lambar don irin wannan rajista a ƙasa.
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,
];
Hakanan zamu iya wuce sigogi tare da Middleware.
Misali, idan aikace-aikacenku yana da ayyuka daban-daban kamar mai amfani, admin, super admin da sauransu. kuma kuna son tabbatar da aikin bisa ga rawar, za ku iya yin shi ta hanyar wucewa da sigogi tare da tsakiya.
Matsakaicin da muka ƙirƙira ya ƙunshi ayyuka masu zuwa, kuma muna iya ƙaddamar da gardama na al'ada bayan gardama $na gaba .
public function handle($request, Closure $next)
{
return $next($request);
}
Yanzu bari mu yi ƙoƙarin saita ma'aunin rawar zuwa sabon middleware wanda za mu ƙirƙira daga karce, sannan ci gaba da ƙirƙirar Role Middleware ta hanyar aiwatar da umarni mai zuwa.
Gyara hanyar rikewa kamar haka
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
mun kara da siga $role
, kuma a cikin hanyar layi echo
don rubuta fitarwa sunan rawar.
Yanzu bari mu yi rijistar RoleMiddleware middleware don takamaiman hanya
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,
];
Yanzu don gwada middleware tare da siga, muna buƙatar ƙirƙirar buƙata da amsa. Don kwatanta amsa bari mu ƙirƙiri mai sarrafa wanda za mu kira TestController
php artisan make:controller TestController --plain
umarnin da aka aiwatar kawai zai haifar da sabon mai sarrafawa a cikin babban fayil ɗin app/Http/TestController.php
, kuma canza hanyar index
tare da layi 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.";
}
}
Bayan saita amsa, muna gina buƙatar ta hanyar gyara fayil ɗin routes.php
ta ƙara da route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
a wannan lokaci za mu iya gwada misali ta ziyartar URL http://localhost:8000/role
kuma a browser za mu ga biyu echo
Role editor
Test Controller
Il terminable Middleware
yana yin wasu ayyuka bayan an aika da martani ga mai lilo. Ana iya samun wannan ta hanyar ƙirƙirar tsaka-tsaki tare da hanyar ƙare a cikin middleware. Il terminable Middleware
dole ne a yi rajista tare da middleware
duniya. Hanyar terminate
zai sami hujjoji biyu roƙon $ e $masu amsa.
Hanyar Terminate
dole ne a ƙirƙira kamar yadda aka nuna a lamba mai zuwa.
php artisan make:middleware TerminateMiddleware
Da zarar an halicci middleware app/Http/Middleware/TerminateMiddleware.php
mu gyara code kamar haka
<?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.";
}
}
a wannan yanayin muna da hanya handle
da wata hanya terminate
tare da sigogi biyu $request
e $response
.
Yanzu bari mu yi rajista da 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,
];
Yanzu muna buƙatar ƙirƙirar mai sarrafawa don daidaita martani
php artisan make:controller XYZController --plain
gyara abubuwan da ke cikin ajin
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Yanzu muna buƙatar gyara fayil ɗin routes/web.php
ƙara hanyoyin da ake buƙata don kunna buƙatar
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
a wannan lokaci za mu iya gwada misali ta ziyartar URL http://localhost:8000/terminate
kuma a browser za mu ga wadannan layukan
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Hakanan kuna iya son:
Coveware ta Veeam zai ci gaba da ba da sabis na amsa abin da ya faru ta hanyar intanet. Coveware zai ba da damar bincikar bincike da damar gyarawa…
Kulawa da tsinkaya yana kawo sauyi a fannin mai & iskar gas, tare da sabbin hanyoyin kula da tsirrai.…
Hukumar CMA ta Burtaniya ta ba da gargadi game da halayen Big Tech a cikin kasuwar bayanan sirri. Akwai…
Dokar "Green Houses" da Tarayyar Turai ta tsara don inganta ingantaccen makamashi na gine-gine, ta kammala aikinta na majalisar tare da…