Kotchasan Framework Documentation

Kotchasan Framework Documentation

Middleware System

TH 05 Feb 2026 06:23

Middleware System

Kotchasan Framework รองรับระบบ Middleware สำหรับจัดการ HTTP Request และ Response ซึ่งสามารถนำไปใช้ทำ Authentication, Logging, CORS, หรือ Rate Limiting ได้

ภาพรวม

Middleware คือ Class ที่สืบทอดจาก Kotchasan\Http\Middleware\BaseMiddleware (หรือ implement MiddlewareInterface) ซึ่งมีหน้าที่ดักจับ Request ก่อนถึง Controller หรือจัดการ Response หลังออกจาก Controller

โครงสร้างพื้นฐาน

namespace App\Middleware;

use Kotchasan\Http\Middleware\BaseMiddleware;
use Kotchasan\Http\Request;

class MyMiddleware extends BaseMiddleware
{
    /**
     * Handle Request
     */
    public function handle(Request $request, ?callable $next = null)
    {
        // 1. ทำงานก่อน Next Middleware/Controller
        if ($request->header('X-Block') === 'True') {
            return $this->createErrorResponse(403, 'Forbidden', 'Blocked by Middleware');
        }

        // 2. เรียก Middleware ถัดไป
        $response = $this->callNext($request, $next);

        // 3. ทำงานหลังได้รับ Response (Optional)
        // $response->withHeader('X-Processed-By', 'MyMiddleware');

        return $response;
    }
}

Built-in Middleware

Kotchasan มาพร้อมกับ Middleware มาตรฐานใน Kotchasan\Http\Middleware:

BasicAuthMiddleware

สำหรับการยืนยันตัวตนแบบ Basic Authentication

use Kotchasan\Http\Middleware\BasicAuthMiddleware;

// ตรวจสอบ username/password
$auth = BasicAuthMiddleware::withCredentials('admin', 'password');
// หรือตรวจสอบจาก array
$auth = BasicAuthMiddleware::withUsers(['admin' => '1234']);

BearerTokenAuthMiddleware

สำหรับการยืนยันตัวตนด้วย Bearer Token

use Kotchasan\Http\Middleware\BearerTokenAuthMiddleware;

$auth = new BearerTokenAuthMiddleware(function($token) {
    // Validate Token Logic
    return $token === 'valid-token';
});

JwtMiddleware

สำหรับการจัดการ JSON Web Token (JWT)

use Kotchasan\Http\Middleware\JwtMiddleware;

$jwt = new JwtMiddleware('your-secret-key');

การใช้งาน (Implementation)

การใช้งาน Middleware มักทำผ่าน Pipeline หรือเรียกตรงๆ ใน Controller

เรียกใช้ใน Controller

public function index(Request $request)
{
    $middleware = new MyMiddleware();
    // ส่ง $this->process เป็น callable ให้ middleware เรียกเมื่อผ่านการตรวจ
    return $middleware->handle($request, [$this, 'process']);
}

public function process(Request $request)
{
    return Response::makeOk(['data' => 'success']);
}

คลาสที่เกี่ยวข้อง