Middleware là gì?

Middleware là phần đông đoạn mã trung gian ở giữa các request và response. Nó nhận những request, thi hành các mệnh lệnh tương xứng trên request đó. Sau khi hoàn thành nó response (trả về) hoặc chuyển kết quả ủy thác cho 1 Middleware khác trong sản phẩm đợi.

Bạn đang xem: Middleware là gì

*

Một ví dụ phổ biến mà họ thường buộc phải dùng Middleware kia là các trang chỉ giành riêng cho admin cùng không cho phép người dùng thông thường có thể truy hỏi cập.

Tại sao nên thực hiện nó?


lý do Laravel là framework rất tốt 2019?
Expressjs là gì? tất tần tật về Express.js

Với tứ tưởng bình thường là mong nối giữa shop của người dùng và khối hệ thống trong thiết kế Web. Middleware đã đóng mục đích trung gian thân request/response và các xử lý logic bên phía trong web server.

Do đó, Middleware trong số Framework cho ứng dụng Web (Laravel, Django, Rails, ExpressJS…), sẽ là các hàm được dùng để tiền xử lý, lọc những request trước khi đưa vào xử lý súc tích hoặc điều chỉnh những response trước khi gửi về cho tất cả những người dùng.

Hiểu những khái niệm cơ phiên bản của Laravel Middleware

Trong bài viết này, mình đã lấy ví dụ như là cần sử dụng framework Laravel nhằm hiểu khái niệm về middleware. Chúng ta sẽ xem xét phương pháp tạo middleware thiết lập trong một áp dụng Laravel.

Sau khi sinh sản middleware tùy chỉnh của bạn, bọn họ sẽ mày mò các tùy chọn gồm sẵn để đk nó cùng với Laravel để nó hoàn toàn có thể thực sự được call trong luồng xử trí yêu cầu.

Middleware trong Laravel là gì?

Middleware như là một trong những cơ chế được cho phép bạn gia nhập vào luồng xử lý request của một vận dụng Laravel. Vào một quy trình xử lý route điển hình của Laravel khi tiến hành việc xử lý yêu ước và middleware là một trong những class mà áp dụng phải thông qua.

Vậy chính xác thì việc xử lý luồng yêu ước Laravel là gì? Ví dụ: cần đảm bảo người dùng làm quyết định coi họ giành được phép truy cập đến route bây giờ hay không.

Yêu ước đăng nhậpChuyển hướng fan dùngThay đổi/chuẩn hoá các tham sốXử lý response được áp dụng Laravel chế tác ra…

Thực tế, Laravel khoác định đã bao gồm sẵn một số trong những middleware quan trọng. Bài toán xác thực người dùng cũng được chính middleware này thực thi.


cơ cấu xử lý request vào Laravel như thế nào?

Làm cụ nào để sản xuất Middleware tùy biến

Chúng ta vẫn tự tạo thành một middleware tùy biến đổi trong phần này. Như đã nói ở trên, Laravel có sẵn những middleware quan lại trọng, mặc dù để thỏa mãn nhu cầu thêm yêu cầu thì họ cần phảo tạo thêm những middleware khác. Nhưng đúng đắn thì middleware này sẽ làm cho gì?

Case study ví dụ nhất mà thực tiễn nhất là khi chúng ta truy cập website từ bất kỳ thiết bị di động cầm tay nào, thì sẽ tiến hành chuyển đào bới URL miền phụ khớp ứng (vd: m.romanhords.com lúc ta vào romanhords.com trên mobile) giành riêng cho mobile với tất cả thông số chuỗi truy hỏi vấn còn nguyên vẹn. Tất nhiên hiện giờ đã có responsive nhưng nhiều lúc một phiên bạn dạng mobile tinh gọn và vận tốc nhanh sẽ sở hữu những tính năng hay ho khác

Trong middleware tùy chỉnh thiết lập này, họ sẽ soát sổ user agent và user được chuyển hướng đến URL tương xứng trên di động cầm tay nếu họ đang áp dụng thiết bị di động.

Chạy lệnh sau để sinh sản một template middleware MobileRedirect.

php artisan make:middleware MobileRedirectVà bạn sẽ tạo ra một file app/Http/Middleware/MobileRedirect.php với code sau.

Việc triển khai của method handle dựa vào khung sườn của middleware, và lô ghích chính của middleware mà nhiều người đang tìm cách thực hiện nằm sinh sống đây.

Có 2 một số loại middleware nhưng mà Laravel đang có — before middleware và after middleware.

Before middleware chạy trước khi yêu mong thực sự được giải pháp xử lý và ý kiến được chế tạo ra. Khía cạnh khác, after middleware chạy sau thời điểm yêu mong được áp dụng xử lý và bình luận đã được chế tạo tại thời gian này.

Trong trường thích hợp này, họ cần đưa hướng người dùng trước khi yêu ước được xử trí và cho nên nó vẫn được cách tân và phát triển như một before middleware.

Tiếp tục sửa đổi file app/Http/Middleware/MobileRedirect.php với các nội dung sau.

mobile == "1") return redirect("mobile-site-url"); return $next($request); }}Chúng ta sẽ bình chọn sự sống thọ của thông số mobile và nếu có giá trị TRUE, người dùng sẽ được chuyển đào bới URL trên vật dụng di động. Hôm nay bạn cần sử dụng một thư viên phát hiện user agent để lấy thông tin user làm việc client.

Tiếp tục ta sẽ điện thoại tư vấn $next($request) góp yêu mong được cách xử trí thêm. Điều đặc biệt quan trọng cần để ý trong trường vừa lòng này là họ đã tùy chỉnh logic phân phát hiện thiết bị di động trước lúc gọi $next($request), với nó trở thành before middleware.

Sau đó họ tạo một after middleware nhằm xử lý những yêu cầu trên.

Xem thêm: Điều Kiện Tự Nhiên Của Các Quốc Gia Cổ Đại Phương Tây, Các Quốc Gia Cổ Đại Phương Tây

Lúc này, middleware tùy chỉnh cấu hình của họ gần như đã sẵn sàng chuẩn bị để được kiểm tra thử. Bạn cần phải đăng cam kết middleware của công ty trong Laravel. Ta mở tệp tin app/Http/Kernel.php

/** * The application"s global HTTP middleware stack. * * These middleware are run during every request khổng lồ your application. * *
var array */protected $middleware = < IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,>;Chúng tha thêm middleware cấu hình thiết lập của bản thân vào mảng trên sau:

protected $middleware = < IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class, AppHttpMiddlewareMobileRedirect::class,>;Sau lúc thêm vào, chúng ta thử truy cập vào ngẫu nhiên route nào của Laravel bởi chuỗi truy tìm vấn mobile=1 và xem kết quả, bây giờ coi như chúng ta đã đăng ký thành công middleware vì mình tạo. Đôi khi chúng ta chỉ ước ao chạy middleware cho những route xác minh hãy sử dụng $routeMiddleware.