- vừa được xem lúc

Middleware trong Laravel

0 0 1

Người đăng: Thanh Cao

Theo Viblo Asia

Dù đã lâu rồi không code, nhưng thi thoảng vẫn ngứa nghề, nên hôm nay mình lên 1 bài về Coding 1 xíu, nhân có 1 bạn hỏi về middleware. Chúng ta sẽ cùng xem xét sâu hơn 1 chút về middleware của Laravel.

Middleware là gì ? Nhắc lại 1 chút, middleware là những đoạn code logic nằm giữa request và logic phía server. Đây thường là những đoạn logic nhỏ, có tính lặp lại thường xuyên, được sử dụng trong quá trình authentication xác thực người dùng logic. Middleware trong Laravel Trong Laravel, middleware được viết nằm trong thư mục App/Http/Middleware. Có 1 số middleware đã được tạo sẵn khi các bạn tạo project. Nếu muốn tạo 1 middleware riêng của mình, thì có thể chạy lệnh : php artisan make:middleware <tên middleware> Việc viết middleware như nào thì rất tiếc bài viết này hơi ngắn, không thể hướng dẫn các bạn chi tiết được nên mình sẽ hướng dẫn trên một nền tảng khác vào dịp khác vậy. Kernel Kernel trong Laravel là 1 file đặc biệt, dùng để khai báo các loại middleware các bạn vừa viết ra ở phần trên. Trong Kernel, có 3 biến lưu các loại middleware chúng ta cần nhớ, đó là:

  • middleware: đây là nơi lưu trữ các middleware sẽ được chạy trong tất cả các request.
  • middlewareGroups: đây là nơi lưu trữ các middleware được nhóm lại thành các group, chúng ta có thể sử dụng 1 group các middleware bằng cách gọi tên tại vị trí này.
  • routeMiddleware: đây là nơi khai báo các middleware route lẻ, mỗi middleware sẽ có 1 tên riêng, và có thể kết hợp nhau (tương tự middlewareGroup). Sau khi đã có middleware và gán tên tương ứng trong Kernel. Chúng ta có thể sử dụng middleware đó tại thư mục routes. Tại thư mục routes, thông thường, mỗi một đường dẫn link tới 1 action cụ thể như get/post/put/delete/... chúng ta hay viết như sau:

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

Đối với những đường dẫn mong muốn đi qua middleware, chúng ta sẽ đưa đoạn code khai báo route vào trong hàm của middleware:

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

Ở đây, chúng ta đang nhìn thấy hàm Route thông thường đã được wrap ở trong 1 hàm tên là : group(). Tại hàm group, chúng ta khai báo tên middleware mong muốn sử dụng theo format trên, và khai báo function chứa các Route khai báo phía trong. Như vậy khi nhận được request POST /account/logout , request sẽ được đi qua middleware xử lý trước, rồi mới tiếp tục đi vào trong các hàm Controller khai báo phía trong. Đối với trường hợp muốn sử dụng các middleware lẻ, chúng ta sử dụng như sau:

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

Lưu ý là dù với tên middleware 'first', 'second', nhưng điều này không đảm bảo là middleware của chúng ta sẽ chạy theo thứ tự (Trong thực tế, các middleware khác nhau sẽ làm nhiệm vụ khác nhau và ít khi cần phụ thuộc vào nhau). Tuy nhiên với một số trường hợp, cần sử dụng thứ tự của middleware, chúng ta có thể khai báo trong middlewarePriority trong Kernel. Link tới https://laravel.com/docs/8.x/middleware#sorting-middleware để biết thêm chi tiết cách sử dụng.****

Bình luận

Bài viết tương tự

- vừa được xem lúc

Những điều đầu tiên cần biết về Github cho một Automation Tester

Trong nội dung bài chia sẻ này mình sẽ chia sẻ các nội dung sau:. . . Tạo Repository trên Github.

0 0 24

- vừa được xem lúc

Hướng dẫn bán hàng trên Lazada cụ thể nhất với 2 cách siêu đơn giản

Cách 1: Thiết lập gian hàng và tạo sản phẩm thủ công. Truy cập Lazada Seller Center, ngay trên đầu trang bạn hãy chọn Tạo sản phẩm.

0 0 29

- vừa được xem lúc

Nhận diện và trích xuất thông tin biển số xe Việt Nam

1. Lời nói đầu.

0 0 21

- vừa được xem lúc

TOP 5 BLOG VỀ IT ĐÁNG ĐỌC

Vào những lúc rảnh rỗi, các bạn thường sẽ làm gì? Coi phim, đi chơi, ...Có ai như mình lúc rảnh thì tìm 1 chỗ yên tĩnh nào đó đeo tai phone nghe những bài nhạc chill và đọc truyện và tìm các blog hay

0 0 15