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ố.