การปกป้องเส้นทางด้วยมิดเดิลแวร์
ใช้มิดเดิลแวร์ auth และ guest เพื่อรักษาความปลอดภัยของเส้นทางและเปลี่ยนเส้นทางผู้ใช้
การปกป้องเส้นทางด้วยมิดเดิลแวร์ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
มิดเดิลแวร์คืออะไร
มิดเดิลแวร์ คือโค้ดที่ทำงานก่อนหรือหลังคำขอ HTTP ไปถึงตัวควบคุม ใช้สำหรับการยืนยันตัวตน การบันทึกเหตุการณ์ CORS การจำกัดอัตรา และงานอื่น ๆ
มิดเดิลแวร์สำหรับการยืนยันตัวตนในตัว
มิดเดิลแวร์ auth จะเปลี่ยนเส้นทางผู้ใช้ที่ยังไม่ได้ยืนยันตัวตนไปยังหน้าล็อกอิน (หรือส่งคืน 401 สำหรับคำขอ API)
<?php
Route::get("/dashboard", [DashboardController::class, "index"])
->middleware("auth");การใช้มิดเดิลแวร์กับกลุ่ม
ปกป้องกลุ่มเส้นทางทั้งหมดได้ในครั้งเดียว
<?php
Route::middleware(["auth", "verified"])->group(function () {
Route::get("/dashboard", [DashboardController::class, "index"]);
Route::get("/profile", [ProfileController::class, "show"]);
});มิดเดิลแวร์ guest
มิดเดิลแวร์ guest จะเปลี่ยนเส้นทางผู้ใช้ที่ยืนยันตัวตนแล้วออกจากหน้าล็อกอินและหน้าสมัครสมาชิก
<?php
Route::middleware("guest")->group(function () {
Route::get("/login", [LoginController::class, "create"]);
Route::get("/register", [RegisterController::class, "create"]);
});การสร้างมิดเดิลแวร์แบบกำหนดเอง
สร้างด้วย Artisan และนำเมธอด handle() ไปใช้งาน
$ php artisan make:middleware EnsureSubscribedตรรกะของมิดเดิลแวร์แบบกำหนดเอง
ส่งคำขอถัดไปคืนเพื่อดำเนินการต่อ หรือส่งคืนการตอบกลับเพื่อยกเลิกการทำงาน
<?php
public function handle(Request $request, Closure $next): Response
{
if (!$request->user()?->isSubscribed()) {
return redirect("/subscribe");
}
return $next($request);
}การลงทะเบียนมิดเดิลแวร์
ลงทะเบียนชื่อแทนของมิดเดิลแวร์ใน app/Http/Kernel.php (Laravel 10) หรือ bootstrap/app.php (Laravel 11 ขึ้นไป)
<?php
// Laravel 11+ bootstrap/app.php:
->withMiddleware(function (Middleware $m) {
$m->alias(["subscribed" => EnsureSubscribed::class]);
})พารามิเตอร์ของมิดเดิลแวร์
ส่งพารามิเตอร์ให้มิดเดิลแวร์โดยใช้เครื่องหมายโคลอน
<?php
Route::middleware("role:admin")->group(function () {
// ...
});
// In middleware handle():
public function handle(Request $request, Closure $next, string $role): Responseมิดเดิลแวร์หลังการทำงาน
โค้ดหลัง $next($request) จะทำงานหลังจากสร้างการตอบกลับแล้ว ซึ่งมีประโยชน์สำหรับการบันทึกเหตุการณ์และการแก้ไขการตอบกลับ
<?php
public function handle(Request $request, Closure $next): Response
{
$response = $next($request); // controller runs here
$response->headers->set("X-App", "Laravel");
return $response;
}ลำดับความสำคัญของมิดเดิลแวร์
ลำดับการทำงานของมิดเดิลแวร์มีความสำคัญ มิดเดิลแวร์ส่วนกลาง (เช่น TrimStrings) จะทำงานก่อนมิดเดิลแวร์ของเส้นทาง
มิดเดิลแวร์จำกัดอัตรา
Laravel มีการจำกัดอัตราผ่านมิดเดิลแวร์ throttle
<?php
Route::middleware("throttle:60,1")->group(function () {
// 60 requests per 1 minute
});สรุป
มิดเดิลแวร์ทำหน้าที่กรองคำขอ HTTP ใช้ auth เพื่อปกป้องเส้นทาง สร้างมิดเดิลแวร์แบบกำหนดเองสำหรับกฎทางธุรกิจ และจัดกลุ่มเส้นทางเพื่อใช้มิดเดิลแวร์ร่วมกันอย่างเป็นระเบียบ
ตรวจสอบความเข้าใจอย่างรวดเร็ว
มิดเดิลแวร์ auth ทำอะไรกับผู้ใช้ที่ยังไม่ได้ยืนยันตัวตน
คำถามที่พบบ่อย
บทเรียน “การปกป้องเส้นทางด้วยมิดเดิลแวร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การปกป้องเส้นทางด้วยมิดเดิลแวร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การปกป้องเส้นทางด้วยมิดเดิลแวร์”
ใช้มิดเดิลแวร์ auth และ guest เพื่อรักษาความปลอดภัยของเส้นทางและเปลี่ยนเส้นทางผู้ใช้ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การปกป้องเส้นทางด้วยมิดเดิลแวร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจสอบสิทธิ์ด้วย Laravel Breeze
- การปกป้องเส้นทางด้วยมิดเดิลแวร์
- Gates: การตรวจสอบสิทธิ์แบบง่าย
- Policies: การอนุญาตตามโมเดล