middleware hoạt động như một lớp giữa người dùng và yêu cầu. Nó có nghĩa là khi người dùng yêu cầu máy chủ thì yêu cầu sẽ chuyển qua middleware và sau đó middleware sẽ xác minh xem yêu cầu đó có được xác thực hay không. Nếu yêu cầu của người dùng được xác thực thì yêu cầu sẽ được gửi đến chương trình phụ trợ. Nếu yêu cầu của người dùng không được xác thực, thì middleware sẽ chuyển hướng người dùng đến màn hình đăng nhập.
Các bài viết liên quan:
Một middleware bổ sung có thể được sử dụng để thực hiện nhiều tác vụ khác nhau ngoại trừ xác thực. Ví dụ, middleware CORS chịu trách nhiệm thêm tiêu đề cho tất cả các phản hồi.
Khung công tác Laravel bao gồm một số middleware như xác thực và bảo vệ CSRF và tất cả những phần mềm này đều nằm trong thư mục app / Http / Middleware.
Chúng ta có thể nói rằng middleware là một bộ lọc yêu cầu http, nơi bạn có thể kiểm tra các điều kiện.
Trong middleware, chúng ta sẽ thảo luận về các chủ đề sau:
- Tạo middleware
- Áp dụng middleware
- Kiểm tra tình trạng trong middleware
- Định tuyến middleware
Xem thêm Express.js Middleware
Giới thiệu về Middleware trong Laravel
Middleware trong Laravel là một tính năng quan trọng giúp tăng cường tính bảo mật và điều khiển truy cập trong ứng dụng web. Middleware là một tầng trung gian giữa các yêu cầu (requests) và các phản hồi (responses) được gửi qua ứng dụng Laravel.
Middleware cho phép bạn thực hiện các xử lý trước và sau khi yêu cầu được xử lý bởi các route trong ứng dụng. Bằng cách sử dụng middleware, bạn có thể kiểm soát quyền truy cập, xác thực người dùng, ghi log, xử lý CORS và thực hiện nhiều tác vụ xử lý khác.
Laravel đi kèm với một số middleware tích hợp sẵn, như middleware xác thực người dùng, middleware phân quyền, middleware ghi log và middleware xử lý CORS. Ngoài ra, bạn có thể tạo và sử dụng các middleware tùy chỉnh để thực hiện các xử lý đặc biệt cho ứng dụng của mình.
Với cấu trúc dễ sử dụng và linh hoạt của Laravel, việc sử dụng middleware trở nên rất dễ dàng. Bạn có thể đăng ký middleware cho các route cụ thể, nhóm route hoặc toàn bộ ứng dụng Laravel.
Với khả năng mở rộng và tùy chỉnh cao, middleware trong Laravel giúp bạn xây dựng các ứng dụng web an toàn, linh hoạt và dễ bảo trì. Bằng cách sử dụng middleware, bạn có thể tạo ra các bước xử lý trung gian linh hoạt và tùy chỉnh để kiểm soát hành vi và quyền truy cập của ứng dụng Laravel.
Xem thêm Controller Middleware trong Laravel
Các chức năng và lợi ích của Middleware
Middleware trong Laravel cung cấp nhiều chức năng và lợi ích quan trọng cho việc phát triển ứng dụng web. Dưới đây là một số chức năng và lợi ích chính của Middleware trong Laravel:
- Xác thực người dùng: Middleware cho phép bạn xác thực người dùng trước khi cho phép họ truy cập vào các tài nguyên và chức năng quan trọng của ứng dụng. Bằng cách sử dụng middleware xác thực, bạn có thể kiểm tra danh tính và quyền truy cập của người dùng, đảm bảo rằng chỉ những người dùng hợp lệ mới có thể truy cập vào các tài nguyên được bảo vệ.
- Phân quyền: Middleware cho phép bạn kiểm soát quyền truy cập của người dùng vào các phần của ứng dụng. Bằng cách sử dụng middleware phân quyền, bạn có thể xác định và kiểm soát quyền truy cập của người dùng dựa trên vai trò, quyền hạn hoặc các tiêu chí khác. Điều này giúp bạn đảm bảo rằng chỉ những người dùng có quyền truy cập mới có thể thực hiện các hành động hoặc truy cập vào các tài nguyên nhất định.
- Ghi log: Middleware cho phép bạn ghi lại các hoạt động và sự kiện quan trọng trong ứng dụng. Bằng cách sử dụng middleware ghi log, bạn có thể ghi lại thông tin về yêu cầu, phản hồi, lỗi, hoạt động người dùng và nhiều thông tin khác. Điều này giúp bạn theo dõi và phân tích các hoạt động trong ứng dụng, hỗ trợ quá trình debug và bảo mật.
- Xử lý CORS: Middleware cho phép bạn xử lý các yêu cầu từ các nguồn khác nhau thông qua cơ chế Cross-Origin Resource Sharing (CORS). Bằng cách sử dụng middleware xử lý CORS, bạn có thể kiểm soát và cho phép truy cập từ các nguồn khác nhau đến các tài nguyên của ứng dụng. Điều này giúp bạn xây dựng các ứng dụng web phong phú và tương tác với các nguồn dữ liệu từ các miền khác nhau một cách an toàn.
- Xử lý lỗi: Middleware cho phép bạn xử lý và điều hướng các lỗi trong quá trình xử lý yêu cầu. Bằng cách sử dụng middleware xử lý lỗi, bạn có thể tùy chỉnh việc xử lý các lỗi, thông báo lỗi và định hướng người dùng đến trang lỗi phù hợp. Điều này giúp bạn cung cấp trải nghiệm người dùng tốt hơn và xử lý các tình huống lỗi một cách chính xác và linh hoạt.
Lợi ích của việc sử dụng Middleware trong Laravel bao gồm:
- Tăng tính bảo mật: Middleware giúp kiểm soát quyền truy cập và xác thực người dùng, ngăn chặn các yêu cầu trái phép và bảo vệ dữ liệu của ứng dụng.
- Tăng tính linh hoạt: Middleware cho phép bạn thêm, xóa hoặc tùy chỉnh các bước xử lý trung gian dễ dàng, giúp điều chỉnh và mở rộng tính năng của ứng dụng.
- Tăng khả năng tái sử dụng: Bằng cách chia nhỏ các chức năng xử lý thành middleware riêng biệt, bạn có thể tái sử dụng chúng trong các phần khác nhau của ứng dụng, giảm thiểu việc lặp lại mã và tăng tính hiệu quả.
- Dễ quản lý và bảo trì: Middleware giúp tách biệt các tác vụ xử lý và quản lý chúng một cách rõ ràng, giúp dễ dàng quản lý và bảo trì mã nguồn của ứng dụng.
Tổng quan, Middleware trong Laravel đóng vai trò quan trọng trong việc kiểm soát quyền truy cập, bảo mật và xử lý các yêu cầu trong ứng dụng web. Với sự linh hoạt và khả năng tùy chỉnh cao, Middleware giúp bạn xây dựng các ứng dụng Laravel mạnh mẽ và an toàn.
Xem thêm Nhóm Router trong Laravel
Các bước cài đặt và cấu hình Middleware trong Laravel
Để cài đặt và cấu hình Middleware trong Laravel, bạn có thể thực hiện các bước sau:
Bước 1: Tạo Middleware
- Sử dụng câu lệnh Artisan để tạo một Middleware mới:
php artisan make:middleware MyMiddleware
- Trong ví dụ trên, Middleware mới sẽ được tạo với tên là “MyMiddleware”. Bạn có thể đặt tên tùy ý cho Middleware của mình.
Bước 2: Cấu hình Middleware
- Mở file
app/Http/Kernel.php
. - Trong file Kernel.php, bạn sẽ thấy một mảng
$routeMiddleware
chứa các định nghĩa Middleware. Thêm một định nghĩa cho Middleware của bạn vào mảng này:
protected $routeMiddleware = [ // ... 'mymiddleware' => \App\Http\Middleware\MyMiddleware::class, ];
- Trong đoạn mã trên,
mymiddleware
là tên định danh cho Middleware và\App\Http\Middleware\MyMiddleware::class
là đường dẫn đến file Middleware vừa tạo.
Bước 3: Sử dụng Middleware
- Bạn có thể sử dụng Middleware trong các tuyến đường (routes) của ứng dụng bằng cách thêm phương thức
middleware
vào định nghĩa tuyến đường:
Route::get('/example', function () { // })->middleware('mymiddleware');
- Trong ví dụ trên, Middleware có tên
mymiddleware
được áp dụng cho tuyến đường/example
. Bạn có thể thay đổi tên Middleware tùy thuộc vào tên định danh bạn đã đặt trong bước 2.
Bước 4: Tuỳ chỉnh Middleware
- Mở file Middleware mà bạn đã tạo ở Bước 1 (
app/Http/Middleware/MyMiddleware.php
). - Trong phương thức
handle
, bạn có thể thực hiện các xử lý logic tương ứng với Middleware của mình.
public function handle($request, Closure $next) { // Xử lý trước khi gọi tới Controller hoặc tiếp tục Middleware tiếp theo $response = $next($request); // Xử lý sau khi gọi tới Controller hoặc Middleware tiếp theo return $response; }
Sau khi cài đặt và cấu hình Middleware, Laravel sẽ tự động áp dụng Middleware đó vào quá trình xử lý các yêu cầu tương ứng với tuyến đường đã được định nghĩa.
Lưu ý rằng thứ tự định nghĩa Middleware trong Kernel.php quyết định thứ tự áp dụng của chúng. Middleware được áp dụng theo thứ tự từ trên xuống dưới trong mảng $middleware
và $middlewareGroups
.
Hy vọng rằng những thông tin trên đã giúp bạn cài đặt và cấu hình Middleware trong Laravel thành công.
Xem thêm Xác thực trong Laravel
Ví dụ về sử dụng middleware
Tạo middleware
Gõ lệnh php Artian make: middleware ‘tên của middleware’.
Trong màn hình trên, chúng ta gõ lệnh “php Artian make: middleware CheckAge” trong đó CheckAge là tên của middleware. Cửa sổ trên cho thấy middleware đã được tạo thành công với tên “CheckAge”.
Để xem liệu middleware CheckAge có được tạo hay không, hãy chuyển đến dự án của bạn. Tên dự án của chúng tôi là laravelproject, vì vậy đường dẫn cho middleware sẽ là: C: \ xampp \ htdocs \ laravelproject \ app \ Http \ Middleware.
Áp dụng middleware
middleware có thể được áp dụng cho tất cả các URL hoặc một số URL cụ thể.
Bước 1: Mở tệp kernel.php. Nếu chúng ta muốn áp dụng middleware cho tất cả các URL, thì hãy thêm đường dẫn của middleware trong mảng middleware.
Bước 2: Gõ lệnh php Artian serve trong Git Bash Window.
Bước 3: Mở tệp CheckAge.php, tệp mà bạn đã tạo làm middleware.
Bước 4: Bây giờ, nhập URL ‘http: // localhost / laravelproject / public /’.
Hãy áp dụng middleware cho một số tuyến đường cụ thể.
Bước 1: Mở tệp kernel.php. Nếu chúng ta muốn áp dụng middleware cho một số tuyến đường cụ thể
Trong đoạn mã trên, chúng tôi đã thêm mã, tức là ” age ‘=> \ App \ Http \ Middleware \ CheckAge :: class’, trong đó age là tên của middleware. Bây giờ, chúng ta có thể sử dụng middleware ‘tuổi’ cho một số tuyến đường cụ thể.
Bước 2: Mở tệp CheckAge.php, tệp mà bạn đã tạo làm middleware.
Bước 3: Thêm mã middleware trong tệp web.php.
Trong đoạn mã trên, chúng tôi đã thêm middleware trong URL gốc ‘/’ và chúng tôi chưa thêm middleware trong URL ‘người dùng / hồ sơ’.
Đầu ra:
Khi chúng tôi truy cập vào URL gốc, thì kết quả đầu ra sẽ là:
Kết quả trên cho thấy rằng mã middleware cũng đã được truy cập vì nó đang hiển thị “hello world”.
Khi chúng tôi truy cập URL, tức là / user / profile, thì kết quả đầu ra sẽ là:
Kết quả ở trên mà mã middleware chưa được truy cập.
Khi tham số được chuyển vào một URL.
web.php
CheckAge.php
Đầu ra
Kiểm tra tình trạng trong middleware
middleware cũng có thể được sử dụng để kiểm tra tình trạng. Chúng ta hãy hiểu thông qua một ví dụ.
Đầu ra:
Xem thêm Các tính năng của Laravel
Sử dụng và xây dựng các Middleware phổ biến trong Laravel
Trong Laravel, có một số Middleware phổ biến đã được tích hợp sẵn. Dưới đây là một số ví dụ về việc sử dụng và xây dựng các Middleware phổ biến trong Laravel:
- Middleware “auth”:
- Sử dụng Middleware “auth” để kiểm tra xem người dùng đã xác thực hay chưa trước khi truy cập vào các tuyến đường cần xác thực.
- Sử dụng:
->middleware('auth')
- Middleware “guest”:
- Sử dụng Middleware “guest” để kiểm tra xem người dùng đã đăng nhập hay chưa trước khi truy cập vào các tuyến đường dành cho khách (ví dụ: trang đăng ký, đăng nhập).
- Sử dụng:
->middleware('guest')
- Middleware “throttle”:
- Sử dụng Middleware “throttle” để giới hạn số lần yêu cầu từ một địa chỉ IP trong một khoảng thời gian nhất định. Điều này giúp bảo vệ ứng dụng khỏi tấn công từ chối dịch vụ (DDoS) và quản lý tài nguyên máy chủ hiệu quả hơn.
- Sử dụng:
->middleware('throttle:rate_limit,1')
- Middleware tùy chỉnh:
- Bạn cũng có thể tự xây dựng các Middleware tùy chỉnh cho các yêu cầu cụ thể của ứng dụng.
- Sử dụng câu lệnh Artisan để tạo Middleware mới:
php artisan make:middleware MyMiddleware
- Xác định xử lý logic trong phương thức “handle” của Middleware để kiểm tra và xử lý yêu cầu trước khi tiếp tục hoặc chuyển hướng yêu cầu.
- Đăng ký Middleware trong file
app/Http/Kernel.php
và sử dụng nó cho các tuyến đường tương ứng.
Ví dụ về việc sử dụng Middleware trong một tuyến đường:
Route::get('/profile', function () { // Logic xử lý tuyến đường })->middleware('auth');
Ví dụ về việc tạo Middleware tùy chỉnh:
class MyMiddleware { public function handle($request, Closure $next) { // Xử lý trước khi gọi tới Controller hoặc Middleware tiếp theo $response = $next($request); // Xử lý sau khi gọi tới Controller hoặc Middleware tiếp theo return $response; } }
Trên đây chỉ là một số ví dụ về việc sử dụng và xây dựng các Middleware phổ biến trong Laravel. Bạn có thể tùy chỉnh và xây dựng các Middleware khác phù hợp với yêu cầu của ứng dụng của mình.