ນີ້ຫມາຍຄວາມວ່າເມື່ອຜູ້ໃຊ້ (Laravel view) ເຮັດການຮ້ອງຂໍກັບເຄື່ອງແມ່ຂ່າຍ (ຕົວຄວບຄຸມ Laravel), ການຮ້ອງຂໍຈະຜ່ານຕົວກາງ. ດ້ວຍວິທີນີ້, ສື່ກາງສາມາດກວດເບິ່ງວ່າຄຳຮ້ອງຂໍນັ້ນຖືກກວດສອບຄວາມຖືກຕ້ອງຫຼືບໍ່:
Laravel ອະນຸຍາດໃຫ້ທ່ານ defiສໍາເລັດຮູບແລະນໍາໃຊ້ຕົວກາງເພີ່ມເຕີມເພື່ອປະຕິບັດວຽກງານທີ່ຫຼາກຫຼາຍຍົກເວັ້ນການກວດສອບຄວາມຖືກຕ້ອງ.
Laravel middlewares, ເຊັ່ນ: ການກວດສອບຄວາມຖືກຕ້ອງແລະການປົກປ້ອງ CSRF, ແມ່ນຢູ່ໃນໄດເລກະທໍລີ app/http/Middleware .
ດັ່ງນັ້ນພວກເຮົາຈຶ່ງສາມາດເວົ້າໄດ້ວ່າເຄື່ອງກາງແມ່ນຕົວກອງຄໍາຮ້ອງຂໍ http, ໂດຍຜ່ານທີ່ມັນເປັນໄປໄດ້ທີ່ຈະກວດສອບເງື່ອນໄຂແລະປະຕິບັດການປະຕິບັດ.
ເພື່ອສ້າງຕົວກາງໃຫມ່, ພວກເຮົາດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້:
php artisan make:middleware <name-of-middleware>
ພວກເຮົາສ້າງ middleware
ແລະພວກເຮົາໂທຫາມັນ CheckAge
, artisan
ຈະຕອບພວກເຮົາດັ່ງຕໍ່ໄປນີ້:
ປ່ອງຢ້ຽມຂ້າງເທິງສະແດງໃຫ້ເຫັນວ່າຕົວກາງໄດ້ຖືກສ້າງຂື້ນດ້ວຍຊື່ " ເຊັກອາຍຸ ".
ເພື່ອເບິ່ງວ່າຕົວກາງ 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 ຈາກແອັບພລິເຄຊັນ, ໃນຂະນະທີ່ ເສັ້ນທາງ Middleware ຈະຖືກມອບຫມາຍໃຫ້ເສັ້ນທາງສະເພາະ. Middleware ສາມາດລົງທະບຽນໄດ້ທີ່ app/http/Kernel.php. ໄຟລ໌ນີ້ມີຄຸນສົມບັດສອງອັນ $middleware 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,
];
ພວກເຮົາສ້າງ ເຊັກອາຍຸ ໃນຕົວຢ່າງທີ່ຜ່ານມາ. ດຽວນີ້ພວກເຮົາສາມາດລົງທະບຽນມັນຢູ່ໃນຊັບສິນເສັ້ນທາງກາງ. ລະຫັດສໍາລັບການລົງທະບຽນດັ່ງກ່າວແມ່ນສະແດງໃຫ້ເຫັນຂ້າງລຸ່ມນີ້.
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.
ຕົວຢ່າງ, ຖ້າແອັບພລິເຄຊັນຂອງທ່ານມີບົດບາດແຕກຕ່າງກັນເຊັ່ນ: ຜູ້ໃຊ້, admin, super admin ແລະອື່ນໆ. ແລະທ່ານຕ້ອງການຢືນຢັນການປະຕິບັດໂດຍອີງໃສ່ບົດບາດ, ທ່ານສາມາດເຮັດໄດ້ໂດຍການຖ່າຍທອດຕົວກໍານົດການກັບຕົວກາງ.
ເຄື່ອງກາງທີ່ພວກເຮົາສ້າງປະກອບດ້ວຍຟັງຊັນຕໍ່ໄປນີ້, ແລະພວກເຮົາສາມາດຜ່ານການໂຕ້ຖຽງທີ່ກໍາຫນົດເອງຫຼັງຈາກການໂຕ້ຖຽງ $ຕໍ່ໄປ .
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
ຈະໄດ້ຮັບການໂຕ້ຖຽງສອງ $request e $response.
ວິທີການ 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
.
ຕອນນີ້ໃຫ້ລົງທະບຽນ 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,
];
ໃນປັດຈຸບັນພວກເຮົາຈໍາເປັນຕ້ອງສ້າງຕົວຄວບຄຸມເພື່ອຈໍາລອງການຕອບສະຫນອງ
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
ແລະໃນ browser ພວກເຮົາຈະເຫັນເສັ້ນຕໍ່ໄປນີ້
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
ທ່ານອາດຈະມັກ:
Coveware ໂດຍ Veeam ຈະສືບຕໍ່ໃຫ້ບໍລິການຕອບໂຕ້ເຫດການ extortion cyber. Coveware ຈະສະ ເໜີ ຄວາມສາມາດດ້ານນິຕິສາດແລະການແກ້ໄຂ…
ການຮັກສາການຄາດເດົາແມ່ນການປະຕິວັດຂະແໜງນ້ຳມັນ ແລະ ອາຍແກັສ, ດ້ວຍແນວທາງນະວັດຕະກໍາ ແລະ ຕັ້ງໜ້າໃນການຄຸ້ມຄອງພືດ.…
CMA ຂອງອັງກິດໄດ້ອອກຄໍາເຕືອນກ່ຽວກັບພຶດຕິກໍາຂອງ Big Tech ໃນຕະຫຼາດປັນຍາປະດິດ. ຢູ່ທີ່ນັ້ນ…
ດຳລັດ “Case Green” ທີ່ສ້າງຂຶ້ນໂດຍສະຫະພາບເອີລົບ ເພື່ອຍົກສູງປະສິດທິພາບດ້ານພະລັງງານຂອງຕຶກອາຄານ, ໄດ້ສິ້ນສຸດຂະບວນການນິຕິບັນຍັດຂອງຕົນດ້ວຍ…