0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Tìm Hiểu Về Middleware Trong Laravel: Hướng Dẫn Chi Tiết

Đăng vào 2 tuần trước

• 3 phút đọc

Chủ đề:

@Auto testing

Tìm Hiểu Về Middleware Trong Laravel

Dù đã một thời gian dài không mã hóa, nhưng càng về sau, mình vẫn cảm thấy hứng thú với lập trình. Hôm nay, mình quyết định viết một bài viết ngắn về middleware trong Laravel, vì có một bạn đã hỏi về nó. Chúng ta sẽ cùng nhau khám phá sâu hơn về khái niệm này nhé.

Middleware Là Gì?

Middleware là những đoạn mã logic nằm giữa yêu cầu (request) từ người dùng và xử lý ở phía máy chủ. Đây thường là các đoạn mã nhỏ, lặp lại nhiều lần, được sử dụng thường xuyên trong quá trình xác thực người dùng (authentication). Các middleware giúp chúng ta kiểm soát quá trình xử lý yêu cầu một cách hiệu quả hơn.

Middleware Trong Laravel

Trong Laravel, các middleware được lưu trữ trong thư mục App/Http/Middleware. Khi khởi tạo một dự án mới, Laravel sẽ tạo sẵn một số middleware cho bạn. Nếu bạn muốn tạo một middleware riêng, hãy sử dụng lệnh: php artisan make:middleware <tên_middleware>.
Việc viết middleware chi tiết hơn sẽ được mình đề cập trong một bài viết khác, vì bài viết này sẽ ngắn gọn hơn.

Kernel

Kernel là một file đặc biệt trong Laravel, đóng vai trò quan trọng trong việc khai báo các loại middleware mà bạn đã tạo ở phần trên. Trong Kernel, có ba biến chính mà bạn cần nhớ:

  1. middleware: nơi lưu trữ các middleware sẽ được chạy cho tất cả các yêu cầu.
  2. middlewareGroups: nơi lưu trữ các middleware được nhóm lại thành các nhóm, bạn có thể sử dụng một nhóm middleware bằng cách gọi tên tại vị trí này.
  3. routeMiddleware: nơi khai báo các middleware cho từng route, mỗi middleware sẽ có một tên riêng, và có thể kết hợp lại với nhau (tương tự như middlewareGroup).

Sau khi đã tạo các middleware và gán tên cho chúng trong Kernel, bạn có thể sử dụng chúng trong thư mục routes.

Cách Khai Báo Route với Middleware

Tại thư mục routes, mỗi đường dẫn sẽ dẫn tới một action cụ thể như GET/POST/PUT/DELETE. Bạn có thể khai báo như sau:

php Copy
Route::post('/account/login', [AccountController::class, 'login']);

Khi muốn một đường dẫn thực hiện qua middleware, bạn cần đưa đoạn khai báo route vào trong hàm của middleware:

php Copy
Route::group(['middleware' => ['api']], function () {
    Route::post('/account/logout', [AccountController::class, 'logout']);
});

Ở đây, hàm Route đã được bọc trong một hàm có tên là group(). Trong hàm group, bạn khai báo tên middleware mong muốn sử dụng và chứa các Route tương ứng. Như vậy, khi nhận được yêu cầu POST tới /account/logout, yêu cầu sẽ đi qua middleware xử lý trước khi tiếp tục tới các hàm Controller được khai báo bên trong.

Sử Dụng Middleware Đơn Lẻ

Nếu bạn muốn sử dụng middleware đơn lẻ, bạn có thể khai báo như sau:

php Copy
Route::post('/account/login', [AccountController::class, 'login'])
    ->middleware(['first', 'second']);

Lưu ý rằng, mặc dù với tên middleware 'first' và 'second', điều này không đảm bảo rằng chúng sẽ chạy theo thứ tự nhất định. Trong thực tế, các middleware thường thực hiện những nhiệm vụ khác nhau và không phụ thuộc vào nhau. Tuy nhiên, nếu bạn cần kiểm soát thứ tự chạy của các middleware, bạn có thể khai báo trong middlewarePriority trong Kernel. Bạn có thể tìm hiểu thêm chi tiết tại tài liệu Laravel.

Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về middleware trong Laravel. Hãy theo dõi mình để biết thêm nhiều thông tin hữu ích về lập trình!

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào