0Pricing
PHP Academy · บทเรียน

การปกป้องเส้นทางด้วยมิดเดิลแวร์

ใช้มิดเดิลแวร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจสอบสิทธิ์ด้วย Laravel Breeze
  2. การปกป้องเส้นทางด้วยมิดเดิลแวร์
  3. Gates: การตรวจสอบสิทธิ์แบบง่าย
  4. Policies: การอนุญาตตามโมเดล
← กลับไปที่ PHP Academy