Xem mẫu
- PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ
Middleware
Nguyễn Hữu Thể
- 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.
Image from: http://kienthuclaptrinh.info/2018/12 2
- 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
namespace App\Http\Middleware;
use Closure;
class CheckAge{
public function handle($request, Closure $next){
if ($request->age
- Đăng ký Middleware
❖ 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,
];
5
- Gán Middleware
Khi middleware đã được định nghĩa trong HTTP kernel => sử
dụng phương thức middleware gán cho một route:
Route::get('/', function () {
//
})->middleware('first', 'second');
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');
6
- CÁ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…
7
- 1. Lệnh tạo php artisan make:middleware CheckAge
Middleware
2. Đăng ký protected $routeMiddleware = [//…, 'checkage' =>
Middleware \App\Http\Middleware\CheckAge::class];
3. Viết xử lý class CheckAge{
cho phương public function handle($request, Closure $next){
thức handle() if($request->has('age') && $request['age'] >= 20)
trong return $next($request);
Middleware else
return redirect()->route('error');
}
}
4. Viết các
Route thông Route::get ( 'age', function () {
echo "Bạn đã nhập tuổi";
báo
} )->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');
Nhập số tuổi
Route::get ( 'input_age', function () {
return view('input_age');
} )->name('input_age');
5. View nhập…
8
- http://localhost/.../public/input_age
nguon tai.lieu . vn