ĐĂNG KÝ MIDDLEWARE VỚI HỆ THỐNG

Một phần của tài liệu Giáo trình lập trình Back-End web 2 Dành cho bậc Cao đẳng ngành Công nghệ thông tin (Trang 28 - 31)

CHƯƠNG 2 : ROUTING VÀ MIDDLEWARE

2.2 KHAI BÁO MIDDLEWARE

2.2.1. ĐĂNG KÝ MIDDLEWARE VỚI HỆ THỐNG

Địa chỉ truy cập vào ứng dụng được khai báo trong routes, bất cứ người dùng nào cũng có quyền truy cập vào địa chỉ đã được khai báo. Ứng dụng phải xử lý các yêu cầu từ người dùng.

Nhằm giảm tải cho việc xử lý yêu cầu trong ứng dụng, Laravel đưa ra middleware để “tiền xử lý” các yêu cầu từ người dùng. Ví dụ: kiểm tra người dùng có đăng nhập hay chưa, kiểm tra quyền hạn của người dùng có được phép truy cập hay khơng? Như mơ tả trong ví dụ, tất cả có thể được viết trong ứng dụng.Tuy nhiên việc này khiến chương trình khó tái sử dụng được code, cũng như ứng dụng “nở to” ra, gặp khó khăn trong bảo trì và nâng cấp.

Route::put('sua-bai-viet/{id?}', function ($id = null) { if ($id) {

return 'Sửa bài viết có id = '.$id; }else {

Return 'Thêm mới bài viết'; }

Hình 2- 1 Kiến trúc middleware

Như hình trên, tất cả các request đều đi qua middleware trước khi vào ứng dụng. Tuy nhiên trong ứng dụng có thể khơng có middleware.

Middleware thực chất là một lớp phải được khai báo theo mẫu do Laravel quy định. Ví dụ sau minh họa khai báo một middleware kiểm tra tuổi người truy cập vào website.

<?php namespace App\Http\Middleware; use Closure;

class CheckAge {

public function handle($request, Closure $next) { if ($request->age <= 200) { return redirect('home'); } return $next($request); } }

Nơi lưu trữ middleware thường là: app/Http/Middleware. Yêu cầu class phải có cấu trúc như trên, nội dung được phép thay đổi được tô đậm, in nghiêng.

Cụ thể, cấu trúc một file class được sử dụng làm middleware phải có cú pháp như sau:

Thơng thường middleware là tập hợp những class, mỗi class xử lý một trường hợp nào đó. Và nội dung hiện thực từng class thường ngắn. Tất cả các middleware muốn tích hợp phải đăng ký với hệ thống.

Nơi đăng ký các middleware được khai báo trong app/Http/Kernel.php tại mục $middleware.

<?php namespace App\Http\Middleware; class CLASS_NAME_MIDDLEWARE {

public function handle($request, Closure $next) {

//TODO: write your code here } } protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

Chỉ số trong mảng $routeMiddleware là tên của middleware được đăng ký với hệ thống. Giá trị mô tả lớp middleware đã hiện thực.

Một phần của tài liệu Giáo trình lập trình Back-End web 2 Dành cho bậc Cao đẳng ngành Công nghệ thông tin (Trang 28 - 31)

Tải bản đầy đủ (PDF)

(82 trang)