Middleware
Nguyn Hu Th
PHÁT TRIỂN PHẦN MỀM NGUN 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.
2
Image from: http://kienthuclaptrinh.info/2018/12
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,
];