Kotchasan Framework Documentation
Middleware System
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']);
}