Bài giảng Phát triển phần mềm nguồn mở - Bài 14: Middleware - Nguyễn Hữu Thể
Tạo Middleware
− Để tạo mới một middleware, sử dụng lệnh
make:middleware
❖ Ví dụ:
php artisan make:middleware CheckAge
✓ Câu lệnh này sẽ tạo ra class CheckAge bên trong thư mục
app/Http/Middleware.
✓Trong middleware này, chúng ta chỉ cho phép truy cập vào
route nếu giá trị age lớn hơn 200. Ngược lại, chúng ta sẽ
chuyển hướng request lại trang home URI.
3Middleware – Ví dụ: CheckAge
4
namespace App\Http\Middleware;
use Closure;
class CheckAge{
public function handle($request, Closure $next){
if ($request->age <= 20)="">=>
return redirect('home');
}
return $next($request);
}
} ➢
Nếu biến age <= 20,="" middleware="" sẽ="" trả="" về="" một="" http="" tới="">=>
➢ Ngược lại, request sẽ được gửi tiếp để xử lý.
➢ Để truyền request vào sâu hơn trong ứng dụng (cho phép middleware "vượt
qua"), gọi callback $next với $request.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Tóm tắt nội dung tài liệu: Bài giảng Phát triển phần mềm nguồn mở - Bài 14: Middleware - Nguyễn Hữu Thể
Middleware Nguyễn Hữu Thể PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ Middleware − Bộ lọc: Trung gian giữa request và response ➢ Ví dụ: Xác nhận người dùng đã xác thực chưa, nếu người dùng đã qua xác thực sẽ được chuyển hướng. 2Image from: Tạo Middleware − Để tạo mới một middleware, sử dụng lệnh make:middleware ❖ Ví dụ: php artisan make:middleware CheckAge ✓Câu lệnh này sẽ tạo ra class CheckAge bên trong thư mục app/Http/Middleware. ✓Trong middleware này, chúng ta chỉ cho phép truy cập vào route nếu giá trị age lớn hơn 200. Ngược lại, chúng ta sẽ chuyển hướng request lại trang home URI. 3 Middleware – Ví dụ: CheckAge 4 namespace App\Http\Middleware; use Closure; class CheckAge{ public function handle($request, Closure $next){ if ($request->age <= 20) { return redirect('home'); } return $next($request); } } ➢ Nếu biến age <= 20, middleware sẽ trả về một HTTP tới client; ➢ Ngược lại, request sẽ được gửi tiếp để xử lý. ➢ Để truyền request vào sâu hơn trong ứng dụng (cho phép middleware "vượt qua"), gọi callback $next với $request. Đăng ký Middleware 5 ❖ Global Middleware Thêm tên class của middleware trong thuộc tính $middleware của class app/Http/Kernel.php ❖ Đăng ký Middleware vào Routes Gán middleware cho route cụ thể: Thêm middleware vào thuộc tính $routeMiddleware trong file app/Http/Kernel.php 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, 'checkage' => \App\Http\Middleware\CheckAge::class, ]; Gán Middleware 6 Route::get('/', function () { // })->middleware('first', 'second'); Khi middleware đã được định nghĩa trong HTTP kernel => sử dụng phương thức middleware gán cho một route: Ví dụ: // Middleware Route::get ( 'age', function () { echo "Bạn đã nhập tuổi"; } )->middleware('checkage');//truyền vào định danh đã khai báo trong Kernel Route::get ( 'no_age', function () { echo "Vui lòng nhập lại tuổi"; } )->name('error'); 7CÁC BƯỚC THIẾT LẬP MIDDLEWARE 1. Lệnh tạo Middleware 2. Đăng ký Middleware 3. Viết xử lý cho phương thức handle() trong Middleware 4. Viết các Route thông báo 5. View nhập 81. Lệnh tạo Middleware 2. Đăng ký Middleware 3. Viết xử lý cho phương thức handle() trong Middleware 4. Viết các Route thông báo 5. View nhập php artisan make:middleware CheckAge protected $routeMiddleware = [//, 'checkage' => \App\Http\Middleware\CheckAge::class]; class CheckAge{ public function handle($request, Closure $next){ if($request->has('age') && $request['age'] >= 20) return $next($request); else return redirect()->route('error'); } } Route::get ( 'age', function () { echo "Bạn đã nhập tuổi"; } )->middleware('checkage');//định danh khai báo trong Kernel Route::get ( 'no_age', function () { echo "Vui lòng nhập lại tuổi"; } )->name('error'); Route::get ( 'input_age', function () { return view('input_age'); } )->name('input_age'); Nhập số tuổi
File đính kèm:
- bai_giang_phat_trien_phan_mem_nguon_mo_bai_14_middleware_ngu.pdf