
Học Laravel 10 cơ bản: Middleware trong Laravel 10
👉 Mục tiêu: Hiểu middleware là gì, cách Laravel xử lý request qua middleware, cách tạo và áp dụng middleware vào route hoặc group.

1. Middleware là gì?
-
Middleware là “lớp trung gian” đứng giữa Request và Response.
-
Nó dùng để lọc, kiểm tra hoặc xử lý logic trước khi request đi vào controller.
Ví dụ thực tế:
-
Kiểm tra người dùng đã đăng nhập chưa → middleware
auth
. -
Giới hạn IP truy cập.
-
Ghi log tất cả request.
2. Middleware mặc định trong Laravel
Khi cài mới, Laravel đã có sẵn:
-
auth
→ kiểm tra đăng nhập. -
guest
→ chỉ cho khách (chưa login). -
verified
→ kiểm tra email đã xác minh. -
throttle
→ giới hạn số request. -
csrf
→ chống tấn công CSRF.
Xem danh sách middleware: app/Http/Kernel.php
3. Tạo Middleware mới
Chạy lệnh:
php artisan make:middleware CheckAdmin
Laravel tạo file: app/Http/Middleware/CheckAdmin.php
namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class CheckAdmin { public function handle(Request $request, Closure $next): Response { // Giả sử user có cột role = 'admin' if (auth()->check() && auth()->user()->role === 'admin') { return $next($request); // Cho đi tiếp } return redirect('/')->with('error', 'Bạn không có quyền truy cập!'); } }
4. Đăng ký Middleware
Trong app/Http/Kernel.php
:
5. Sử dụng Middleware
a. Trong route:
Route::get('/admin/dashboard', function () { return "Trang Admin"; })->middleware('admin');
b. Trong group:
Route::middleware(['auth', 'admin'])->group(function () { Route::get('/admin/posts', [PostController::class, 'index']); Route::get('/admin/users', [UserController::class, 'index']); });
6. Middleware toàn cục (Global Middleware)
Nếu muốn middleware chạy cho mọi request, thêm vào: app/Http/Kernel.php → $middleware
7. Middleware tham số
Có thể truyền tham số:
CheckRole.php
Đăng ký trong Kernel.php
:
Dùng trong route:
✅ Kết quả
-
Hiểu middleware hoạt động như chốt gác trước khi request vào controller.
-
Biết cách tạo, đăng ký, áp dụng cho route/group.
-
Có thể viết middleware tái sử dụng với tham số.