
Bài 6: Tìm hiểu về Middleware trong Laravel
Một trong những yêu cầu chính của bất kỳ ứng dụng web nào là lọc yêu cầu HTTP và tất cả chúng ta cần thực hiện chức năng đó thật tốt. Laravel PHP Framework cũng cung cấp chức năng đó và khái niệm này được gọi là Middle Laravel Middleware.
Ví dụ, Laravel có chứa một middleware xác thực user đăng nhập vào ứng dụng của bạn được chứng thực. Nếu user chưa được chứng thực, middleware sẽ chuyển hướng (redirect) user tới màn hình đăng nhập.
1. Tạo Middleware
Để tạo Middleware các bạn có thể dùng lệnh sau
php artisan make:middleware isAdmin
Trong đó isAdmin là tên của Middleware. Middleware sẽ nằm trong thư mục app >> Http >> Middleware
Trong bài viết này chúng ta sẽ tạo ví dụ Middleware isAdmin để check xem người dùng có phải Admin hay không
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class isAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->user()->isAdmin == 1){
return $next($request);
}
return redirect('home')->with('error','You have not admin access');
}
}
2. Đăng ký Middleware
Sau khi đã tạo Middleware chúng ta cần đăng ký nó trong file app >> Http >> Kernel.php
Mở file app/Http/Kernel.php và tìm đến dòng protected $routeMiddleware và thêm vào
'admin' => \App\Http\Middleware\isAdmin::class,
Sau khi thêm đoạn code sẽ trông như sau
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'admin' => \App\Http\Middleware\isAdmin::class,
];
Như vậy từ giờ chúng ta sẽ có thêm môt Middleware tùy chỉnh là admin để kiểm tra quyền Admin.
3. Gọi Middleware trong Single Route
Để gọi Middleware trong route các bạn có thể viết như sau:
Route::get('admin/routes', '[email protected]')->middleware('admin');
4. Gọi Middleware trong Group Route
Ngoài cách gọi Middleare đơn lẻ các bạn cũng có thể gọi nó trong Route Group
Route::group(['middleware' => ['auth','admin']], function () {
Route::get('admin/routes', '[email protected]');
});
* Lưu ý: Với cách viết Middlware như trong bài này thì khi sử dụng Middleware admin các bạn phải gọi Middleware auth trước nó
Các bạn có thể tham khảo thêm tại trang Document của Laravel
Các bạn copy bài viết sang website khác, vui lòng ghi nguồn VietLaravel.com. Xin cảm ơn.
Post Comment