Middleware
1. Middleware là gì?
Middleware hoạt động như một cơ chế lọc (filter) các HTTP request đi vào hệ thống. Trước khi request đến được Application Logic hoặc Controller, nó sẽ đi qua nhiều tầng Middleware. Bạn có thể sử dụng Middleware để:
- Xác thực người dùng (kiểm tra đăng nhập)
- Phân quyền (Roles / Permissions)
- Bảo vệ khỏi tấn công (CSFR Token, XSS Sanitization)
- Lưu Log, thống kê người dùng truy cập...
Ví dụ, SkillDo CMS đi kèm một middleware để xác nhận user đã đăng nhập. Nếu user chưa xác thực, middleware sẽ chuyển hướng người dùng trở lại màn hình đăng nhập. Ngược lại, nếu xác thực hợp lệ, request được chuyển tiếp vào ứng dụng.
2. Cách Tạo & Cơ Chế Hoạt Động của Middleware
Một Middleware luôn yêu cầu tồn tại phương thức handle($request, \Closure $next).
Sau khi kiểm tra điều kiện, để truyền Request đi tiếp trong pipeline, ta gọi return $next($request). Hoặc trả về redirect thì ta trả về Response mong muốn và kết thúc chu kì.
<?php
namespace SkillDo\Http\Middlewares;
use SkillDo\Http\Request;
use Closure;
class ExampleMiddleware
{
/**
* Handle an incoming request.
*
* @param \SkillDo\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
// Kiểm tra logic...
if ($request->input('age') <= 200) {
return redirect('home'); // Không hợp lệ: Từ chối / Redirect
}
return $next($request); // Hợp lệ: Tiếp tục tới tầng tiếp theo
}
}