Sena se bolela hore ha mosebelisi (pono ea Laravel) a etsa kopo ho seva (molaoli oa Laravel), kopo e tla feta har'a li-middleware. Ka tsela ena middleware e ka hlahloba hore na kopo e netefalitsoe kapa che:
Laravel e u lumella ho etsa joalo defiqeta le ho sebelisa lisebelisoa tse ling tsa mahareng ho etsa mesebetsi e fapaneng ntle le netefatso.
Laravel middlewares, joalo ka netefatso le ts'ireletso ea CSRF, li fumaneha bukeng app/Http/Middleware .
Ka hona re ka re middleware ke http kopo filter, eo ka eona ho ka khonehang ho netefatsa maemo le ho etsa liketso.
Ho theha middleware e ncha re tsamaisa taelo e latelang:
php artisan make:middleware <name-of-middleware>
Re etsa the middleware
mme re e bitsa CheckAge
, artisan
e tla re araba ka tsela e latelang:
Fesetere e kaholimo e bonts'a hore middleware e entsoe ka katleho ka lebitso " CheckAge ".
Ho bona hore na CheckAge middleware e bōpiloe kapa che, e-ea morerong ho app/Http/Middleware foldareng, 'me u tla bona faele e sa tsoa etsoa.
Faele e sa tsoa etsoa e na le khoutu e latelang
<?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);
}
}
Ho sebelisa middleware, re hloka ho e ngolisa.
Ho na le mefuta e 'meli ea li-middleware ho Laravel:
Middleware globale
Route Middleware
Il Global middleware e tla etsoa ka kopo e 'ngoe le e' ngoe ea HTTP ho tsoa ho kopo, ha ts'ebeliso ea Tsela ea Middleware e tla fuoa tsela e khethehileng. Middleware e ka ngolisoa ho app/Http/Kernel.php. Faele ena e na le litšobotsi tse peli $middleware e $RouteMiddleware . Thepa ea $middleware e sebelisoa ho ngolisa global middleware le beng ba tsona $RouteMiddleware e sebelisoa ho ngolisa li-middleware tse khethehileng.
Ho ngolisa global middleware, thathamisa sehlopha qetellong ea thepa ea $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,
];
Ho ngolisa li-middleware tse khethehileng tsa tsela, eketsa senotlolo le boleng ho thepa ea $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,
];
Re bopile CheckAge mohlaleng o fetileng. Hona joale re ka ngolisa sena sebakeng sa tsela ea middleware. Khoutu ea ngoliso e joalo e bontšitsoe ka tlase.
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,
];
Re ka boela ra fetisa liparamente ka Middleware.
Mohlala, haeba sesebelisoa sa hau se na le likarolo tse fapaneng joalo ka mosebelisi, admin, super admin jj. 'me u batla ho netefatsa ketso ho latela karolo, u ka e etsa ka ho fetisa liparamente ka middleware.
Middleware eo re e entseng e na le ts'ebetso e latelang, 'me re ka fetisa likhang tsa moetlo ka mor'a ngangisano $e latelang .
public function handle($request, Closure $next)
{
return $next($request);
}
Joale ha re lekeng ho beha paramethara ho "middleware" e ncha eo re tla e theha ho tloha qalong, ebe re tsoela pele ho theha Role Middleware ka ho sebelisa taelo e latelang.
Fetola mokhoa oa ho tšoara ka tsela e latelang
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
re kentse parameter $role
, le ka hare ho mokhoa mola echo
ho ngola sephetho lebitso la karolo.
Joale ha re ngoliseng RoleMiddleware middleware bakeng sa tsela e itseng
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,
];
Joale ho leka lisebelisoa tsa mahareng ka paramente, re hloka ho etsa kopo le karabo. Ho etsisa karabo ha re theheng molaoli oo re tla o bitsa TestController
php artisan make:controller TestController --plain
taelo e sa tsoa etsoa e tla theha molaoli e mocha ka har'a foldara app/Http/TestController.php
, le ho fetola mokhoa index
ka mola 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.";
}
}
Kamora ho theha karabo, re theha kopo ka ho hlophisa faele routes.php
ka ho eketsa route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
mothating ona re ka leka mohlala ka ho etela URL http://localhost:8000/role
'me ho sebatli re tla bona tse peli echo
Role editor
Test Controller
Il terminable Middleware
e etsa mesebetsi e itseng ka mora hore karabo e romellwe ho sebadi. Sena se ka finyelloa ka ho theha middleware ka mokhoa kgaola ka hara ntho e mahareng. Il terminable Middleware
e tlameha ho ngolisoa le middleware
lefatshe ka bophara. Mokhoa terminate
e tla fumana likhang tse peli $kopo e $karabo.
Mokhoa Terminate
e tlameha ho etsoa joalo ka ha ho bonts'itsoe khoutu e latelang.
php artisan make:middleware TerminateMiddleware
Hang ha middleware e bōptjoa app/Http/Middleware/TerminateMiddleware.php
ha re fetoleng khoutu ka tsela e latelang
<?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.";
}
}
tabeng ena re na le mokhoa handle
le mokhoa terminate
ka li-parameter tse peli $request
e $response
.
Joale a re ngoliseng 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,
];
Hona joale re hloka ho theha molaoli ho etsisa karabo
php artisan make:controller XYZController --plain
ho fetola dikahare tsa sehlopha
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Hona joale re hloka ho fetola file routes/web.php
ho eketsa litsela tse hlokahalang ho kenya kopo
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
mothating ona re ka leka mohlala ka ho etela URL http://localhost:8000/terminate
'me ho sebatli re tla bona mela e latelang
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Mohlomong u ka rata:
Ophthalmoplasty ophthalmoplasty opereishene e sebelisang Apple Vision Pro e shebelletse khoebo e entsoe Catania Polyclinic…
Ho hlaolela tsebo e ntle ea ho tsamaisa likoloi ka ho kenya mebala ho lokisetsa bana bakeng sa litsebo tse rarahaneng joalo ka ho ngola. Ho mebala...
Lekala la likepe ke matla a 'nete a moruo a lefats'e, a tsamaileng ho ea 'marakeng oa limilione tse likete tse 150...
Mantaha o fetileng, Financial Times e phatlalalitse selekane le OpenAI. FT e fana ka tumello ea bongoli ba eona ba maemo a lefats'e…