Middleware là gì

Hôm nay mình sẽ reviews với đa số fan về Middleware trong Laravel và nghỉ ngơi đó là phiên bản 5.7

Middleware là gì?

Theo wikipedia:

Middleware là phần mềm laptop với trách nhiệm liên kết những nhân tố phần mềm hoặc các ứng dụng cùng nhau. Phần mềm các loại này bao gồm một tập những hình thức có thể chấp nhận được sự liên quan giữa các các bước điều khiển xe trên một hoặc các trang bị không giống nhau. Công nghệ middleware đã làm được cải tiến và phát triển nhằm cung cấp tài năng hoạt động cứu giúp, ship hàng cho các phong cách thiết kế phân tán hay được nhằm cung cấp cùng đơn giản dễ dàng hóa những áp dụng phân tán phức hợp.

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

Thì đối với Laravel nó cũng trọn vẹn điều này.

Cấu trúc file

Tất cả các tệp tin được đặt trong thỏng mục app/Http/Middleware

*

Tạo Middleware trong Laravel

Để chế tạo một middleware, trong Laravel đã cung ứng cho chúng ta một lệnh:

php artisan make:middleware MiddelwareNameTrong đó: MiddlewareName là tên gọi của middleware các bạn có nhu cầu tạo ra.

VD: Tạo một Middleware

php artisan make:middleware CheckLevelNếu cảm nhận thông báo : Middleware created successfully. thì đã sinh sản thành công xuất sắc middleware.

Middleware mặc định đang buộc phải phía trong thư mục: app/Http/Middleware.

Tiếp đó chúng ta msinh hoạt tệp tin vừa tạo ra vẫn thấy gồm dạng:

*

Sử dụng Middleware

Mọi xử trí vào middleware đa số phía trong handle function. Mọi bạn xem qua ví dụ cho dễ nắm bắt nhé:

VD: Mình muốn user vừa singin đề nghị có status = 1 mới được vào admin:

status = 1) return $next($request); else return redirect("/"); }}Xem VD: bên trên chắc số đông người cũng gọi về phong thái buổi giao lưu của nó rồi nhỉ!

Đăng ký Middleware

Các phần bên trên bắt đầu chỉ với tạo nên middleware cùng viết code đến nó nhưng lại không thực hiện được, giờ nếu như muốn sử dụng được middleware trong project thì họ cần phải đăng ký middleware bởi những mẫu mã middleware sau đây:

Global Middleware

Global middleware là một middel là 1 trong những middleware mà bất kể HTTP request như thế nào muốn triển khai được cũng cần phải qua nó.

Để đăng ký global middleware các bạn sẽ đề nghị vào: app/Http/Kernel.php tìm tới đoạn:

*

Đăng ký cùng với cú pháp:

AppHttpMiddlewareMiddlewareName::classTrong số đó : MiddlewareName là tên middleware các bạn có nhu cầu thêm.

VD: Mình ước ao thêm middleware CheckLevel sống VD trên:

protected $middleware = < IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, AppHttpMiddlewareCheckLevel::class, >;Route middleware

Khác với global middleware Route middleware chỉ áp dụng được khi chúng ta Gọi nó sống trong Route.

Xem thêm: Top Pes Hay Nhất 6,9,11,16, Pes 2013 Full Crack Và Link Tải, Tai Pes 2011 Crack Cho Pc

Để đăng ký Route middleware thì phần lớn tín đồ cũng rất cần phải vào app/Http/Kernel.php tìm tới đoạn:

/** * The application"s route middleware. * * These middleware may be assigned khổng lồ groups or used individually. * *
var array */ protected $routeMiddleware = < "auth" => AppHttpMiddlewareAuthenticate::class, "auth.basic" => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class, "bindings" => IlluminateRoutingMiddlewareSubstituteBindings::class, "cabịt.headers" => IlluminateHttpMiddlewareSetCacheHeaders::class, "can" => IlluminateAuthMiddlewareAuthorize::class, "guest" => AppHttpMiddlewareRedirectIfAuthenticated::class, "signed" => IlluminateRoutingMiddlewareValidateSignature::class, "throttle" => IlluminateRoutingMiddlewareThrottleRequests::class, "verified" => IlluminateAuthMiddlewareEnsureEmailIsVerified::class, >;Đăng cam kết cùng với cú pháp:

"Name"=> AppHttpMiddlewareMiddlewareName::classTrong đó:

Name: Là thương hiệu các bạn muốn đặt đến middleware.

MiddlewareName là tên gọi của Middleware những bạn có nhu cầu thêm.

VD: Mình đã thêm middleware CheckLevel vào Route middleware.

"Checklevel"=>AppHttpMiddlewareCheckLevel::class,Sau Khi đăng ký kết thúc middleware những bạn cũng có thể thực hiện nó với route nhỏng sau:

Route::get("admin/profile", function () //)->middleware("Checklevel");Hoặc với nhiều middleware:

Route::get("admin/profile", function () //)->middleware("Middleware1","Middleware2");Hoặc cũng rất có thể thực hiện thương hiệu khá đầy đủ của Middleware nhỏng sau:

use AppHttpMiddlewareCheckLevel;Route::get("admin/profile", function () //)->middleware(CheckLevel::class);Middleware Groups

Với một số loại middleware này bạn cũng có thể gộp các middleware thành các nhóm để Call mang đến nhanh khô.

Để khai báo đội middleware chúng ta tìm tới đoạn:

/** * The application"s route middleware groups. * *
var array */ protected $middlewareGroups = < "web" => < AppHttpMiddlewareEncryptCookies::class, IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class, IlluminateSessionMiddlewareStartSession::class, // IlluminateSessionMiddlewareAuthenticateSession::class, IlluminateViewMiddlewareShareErrorsFromSession::class, AppHttpMiddlewareVerifyCsrfToken::class, IlluminateRoutingMiddlewareSubstituteBindings::class, >, "api" => < "throttle:60,1", "bindings", >, >;Mặc định của Laravel sẽ gồm 2 team middleware là website với api.

Các bạn có nhu cầu ĐK thêm middleware thì đăng ký theo cú pháp tương tự như như mặc định của Laravel.

Và thực hiện vào Route với cú pháp:

Route::get("/", function () //)->middleware("web");Hoặc

Route::group(<"middleware" => <"web">>, function () //);Sorting Middleware

Quý khách hàng rất có thể đăng ký Middeware theo mức độ ưu tiên:

/** * The priority-sorted list of middleware. * * This forces non-global middleware to lớn always be in the given order. * *
var array */protected $middlewarePriority = < IlluminateSessionMiddlewareStartSession::class, IlluminateViewMiddlewareShareErrorsFromSession::class, AppHttpMiddlewareAuthenticate::class, IlluminateSessionMiddlewareAuthenticateSession::class, IlluminateRoutingMiddlewareSubstituteBindings::class, IlluminateAuthMiddlewareAuthorize::class,>;

Lời kết

Qua bài này mình đã trả lời hầu như người thao tác làm việc cùng với middleware vào Laravel. Tuy nhiên nó còn tồn tại 2 loại middleware nữa bản thân ko trình làng tại chỗ này vị cực kỳ ít khi thực hiện, ai quyên tâm có thể coi ở đây.

Bất kỳ thắc mắc tuyệt thử dùng gì thì chúng ta bình luận phía dưới, mình đã giải đáp ạ. Cảm ơn các bạn vẫn quan sát và theo dõi nội dung bài viết của chính bản thân mình.

Hẹn chạm mặt lại các bạn vào bài viết tiếp theo. Thân!

Tmê mệt khảo : https://laravel.com/docs/5.7/middleware, https://toidicode.com/middleware-trong-laravel-51.html