Mae hyn yn golygu pan fydd y defnyddiwr (Laravel view) yn gwneud cais i'r gweinydd (rheolwr Laravel), bydd y cais yn mynd trwy'r nwyddau canol. Fel hyn gall y nwyddau canol wirio a yw'r cais wedi'i ddilysu ai peidio:
Mae Laravel yn caniatáu ichi wneud hynny defigorffen a defnyddio offer canol ychwanegol i gyflawni amrywiaeth o dasgau ac eithrio dilysu.
Mae nwyddau canol Laravel, fel dilysu ac amddiffyn CSRF, wedi'u lleoli yn y cyfeiriadur ap/Http/Middleware .
Gallwn ddweud felly bod y nwyddau canol yn hidlydd cais http, y gellir ei ddefnyddio i wirio amodau a chyflawni gweithredoedd.
I greu nwyddau canol newydd rydym yn rhedeg y gorchymyn canlynol:
php artisan make:middleware <name-of-middleware>
Rydym yn creu y middleware
ac rydym yn ei alw CheckAge
, artisan
bydd yn ein hateb fel a ganlyn:
Mae'r ffenestr uchod yn dangos bod y nwyddau canol wedi'u creu'n llwyddiannus gyda'r enw ” CheckAge ".
I weld a yw nwyddau canol CheckAge wedi'u creu ai peidio, ewch i'r prosiect yn y ffolder app / Http / Middleware, a byddwch yn gweld y ffeil sydd newydd ei chreu
Mae gan y ffeil sydd newydd ei chreu y cod canlynol
<?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);
}
}
Er mwyn defnyddio nwyddau canol, mae angen inni ei gofrestru.
Mae dau fath o nwyddau canol yn Laravel:
Middleware globale
Route Middleware
Il nwyddau canol byd-eang yn cael ei weithredu ar bob cais HTTP o'r cais, tra bod y Llwybr Canolwedd yn cael ei neilltuo i lwybr penodol. Gellir cofrestru nwyddau canol yn app/Http/Kernel.php. Mae'r ffeil hon yn cynnwys dau briodwedd $ llestri canol e $ routeMiddleware . Yr eiddo $middleware yn cael ei ddefnyddio i gofrestru nwyddau canol byd-eang a pherchnogaeth $ routeMiddleware yn cael ei ddefnyddio i gofrestru nwyddau canol llwybr-benodol.
I gofrestru nwyddau canol byd-eang, rhestrwch y dosbarth ar ddiwedd yr eiddo $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,
];
I gofrestru nwyddau canol llwybr-benodol, ychwanegwch yr allwedd a'r gwerth i'r eiddo $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,
];
Fe wnaethon ni greu CheckAge yn yr enghraifft flaenorol. Gallwn nawr gofrestru hwn yn eiddo llwybr y nwyddau canol. Mae'r cod ar gyfer cofrestriad o'r fath i'w weld isod.
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,
];
Gallwn hefyd basio paramedrau gyda Middleware.
Er enghraifft, os oes gan eich cais rolau gwahanol fel defnyddiwr, gweinyddwr, uwch weinyddwr ac ati. ac rydych chi am ddilysu'r weithred yn seiliedig ar y rôl, gallwch chi ei wneud trwy basio'r paramedrau gyda'r nwyddau canol.
Mae'r offer canol a grëwyd gennym yn cynnwys y swyddogaeth ganlynol, a gallwn basio dadleuon arferiad ar ôl y ddadl $ nesaf .
public function handle($request, Closure $next)
{
return $next($request);
}
Nawr, gadewch i ni geisio gosod y paramedr rôl i offer canol newydd yr ydym yn mynd i'w greu o'r dechrau, yna symud ymlaen i greu Role Middleware trwy redeg y gorchymyn canlynol
Addaswch y dull handlen fel a ganlyn
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
ychwanegon ni'r paramedr $role
, a thu mewn i'r dull y llinell echo
i ysgrifennu'r allbwn enw'r rôl.
Nawr, gadewch i ni gofrestru'r offer canol RoleMiddleware ar gyfer llwybr penodol
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,
];
Nawr i brofi'r nwyddau canol gyda'r paramedr, mae angen i ni greu cais ac ymateb. I efelychu'r ymateb, gadewch i ni greu'r rheolydd y byddwn yn ei alw'n TestController
php artisan make:controller TestController --plain
bydd y gorchymyn sydd newydd ei weithredu yn creu rheolydd newydd y tu mewn i'r ffolder app/Http/TestController.php
, a newid y dull index
gyda'r llinell 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.";
}
}
Ar ôl sefydlu'r ymateb, rydym yn adeiladu'r cais trwy olygu'r ffeil routes.php
trwy ychwanegu y route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
ar y pwynt hwn gallwn roi cynnig ar yr enghraifft trwy ymweld â'r URL http://localhost:8000/role
ac yn y porwr gwelwn y ddau echo
Role editor
Test Controller
Il terminable Middleware
yn cyflawni rhai tasgau ar ôl i'r ymateb gael ei anfon i'r porwr. Gellir cyflawni hyn trwy greu offer canol gyda'r dull terfynu yn y llestri canol. Il terminable Middleware
rhaid cofrestru gyda'r middleware
byd-eang. Y dull terminate
bydd yn derbyn dwy ddadl $cais e $ymateb.
Y dull Terminate
rhaid ei greu fel y dangosir yn y cod canlynol.
php artisan make:middleware TerminateMiddleware
Unwaith y bydd y middleware yn cael ei greu app/Http/Middleware/TerminateMiddleware.php
gadewch i ni addasu'r cod fel a ganlyn
<?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.";
}
}
yn yr achos hwn mae gennym ddull handle
a dull terminate
gyda'r ddau baramedr $request
e $response
.
Nawr gadewch i ni gofrestru'r 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,
];
Nawr mae angen i ni greu'r rheolydd i efelychu'r ymateb
php artisan make:controller XYZController --plain
addasu cynnwys y dosbarth
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Nawr mae angen i ni olygu'r ffeil routes/web.php
ychwanegu'r llwybrau sydd eu hangen i actifadu'r cais
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
ar y pwynt hwn gallwn roi cynnig ar yr enghraifft trwy ymweld â'r URL http://localhost:8000/terminate
ac yn y porwr byddwn yn gweld y llinellau canlynol
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Efallai yr hoffech chi hefyd:
Bydd Coveware gan Veeam yn parhau i ddarparu gwasanaethau ymateb i ddigwyddiadau cribddeiliaeth seiber. Bydd Coveware yn cynnig galluoedd fforensig ac adfer…
Mae gwaith cynnal a chadw rhagfynegol yn chwyldroi'r sector olew a nwy, gyda dull arloesol a rhagweithiol o reoli planhigion.…
Mae CMA y DU wedi cyhoeddi rhybudd am ymddygiad Big Tech yn y farchnad deallusrwydd artiffisial. Yno…
Mae'r Archddyfarniad "Achos Gwyrdd", a luniwyd gan yr Undeb Ewropeaidd i wella effeithlonrwydd ynni adeiladau, wedi dod â'i broses ddeddfwriaethol i ben gyda…