Middleware trong Laravel

Middleware trong Laravel hướng dẫn bạn sử dụng middleware để thực hiện các kiểm soát cần thiết phục vụ các yêu cầu nghiệp vụ trong dự án.


Middleware trong Laravel

Có một số class đặc biệt trong Laravel cung cấp cách thức kiểm soát request của user, đó là Middleware. Việc tạo và sử dụng middleware là rất cần phải biết và không khó.

Ví dụ: middleware kiểm tra người dùng đã đăng nhập hay chưa. Nếu họ chưa đăng nhập thì redirect đến route login. Nếu đã đăng nhập thì cho request xử lý bình thường.

Middeware có thể thực hiện xử lý trước và sau luồng xử lý nghiệp vụ chính.  Ví dụ: kiểm tra quyền của user, ghi log lỗi, log các hành động của user, thêm http header, kiểm tra xem user đã chọn phòng ban hay chọn khóa học chưa…

Một vàimiddleware có sẵn trong Laravel như CSRF protection, mã hóa cookie… Các file middleware này lưu trong folder app/Http/Middleware

Tạo mới middleware

Để tạo middleware , thực hiện như sau:

php artisan make:middleware checkAdmin

Chạy lệnh xong thì sẽ có file checkAdmin.php mới tạo ra trong folder app\Http\Middleware. Mở file lên sẽ thấy có hàm handle, đây là nơi bạn code để thực hiện tác vụ cần thiết.

Middleware & response

Middleware chạy trước hay sau response tùy vào cách bạn code. Ví dụ middleware sau thực hiện tác vụ trước khi request xử lý:

Còn middleware sau thực hiện tác vụ sau khi request xử lý:

Đăng ký middleware với Laravel

Miiddleware khi tạo xong phải đăng ký với Laravel để có thể chạy trong các request http. Có thể đăng ký middleware của mình như là global middleware hoặc route middleware.

Global middleware:  Là middleware thực thi trong mọi HTTP request, bạn đăng ký nó trong mục $middleware của file Http/Kernel.php

Route middleware :  Là middleware sẽ chạy khi user request một route cụ thể nào đó. Bạn đăng ký nó trong $routeMiddleware của file  Http/Kernel.php

Khai báo middle trong route

Đối với các route middleware, sau khi đăng ký trong file kernel.php thì khai báo trong route với hàm middleware() . Có thể khai báo 1 hoặc nhiều middleware đều được. Mời xem ví dụ sau:

Nhờ Middleware trong Laravel, bạn có thể can thiệp để thực hiện các kiểm soát nghiệp vụ cần thiết trong hoạt động của các chức năng trong dự án. Nó rất cần thiết , quan trọng và dễ dùng. Ví dụ : kiểm tra sự hợp lệ trong profile của user (có thiếu thông tin gì không, như cmnd, điện thoại chẳng hạn). Hoặc kiểm tra quyền, ghi nhận các action user đã thực hiện… Xem thêm ở đây nhé https://laravel.com/docs/9.x/middleware