Laravel tạo Middleware cho Route

04/01/2022   Laravel

Laravel tạo Middleware cho Route

Laravel tạo Middleware cho Route

Middleware: có tác dụng lọc các request (url) vào các route. Trước khi chạy vào route có middleware thì phải chạy qua sự kiểm tra của middleware trước nếu đủ điều kiện thì mới chạy tới route không thì sẽ chuyển hướng đến trang khác.

Ví dụng tạo Middleware Checklevel

B1. Mở Cmd lên gõ lệnh tạo middleware

php artisan make:middleware CheckLevel

Lệnh này sẽ tạo ra file: \app\Http\Middleware\CheckLevel.php

B2. Đăng ký Middleware trong file app/Http/Kernel.php

 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,
        'Checklevel'=> \App\Http\Middleware\Checklevel::class,
    ];

B3. Chỉnh sửa file Middleware CheckLevel.php theo yêu cầu

use Closure;
use Illuminate\Support\Facades\Auth;

class CheckLevel
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check()&&Auth::user()->level>1)
        {
            return $next($request);
        }else{
            return redirect('/');
        }

    }
}

B4. Sử dụng Middleware

Cách 1: Chỉ định Middleware cho Route cụ thể

Route::get('/', function () {
    //
})->middleware('CheckLevel', 'MiddlewareKhac');

Cách 2: Tạo nhóm cho Middleware

Route::group(['middleware' => ['CheckLevel']], function () {
    //
});

 

Bài viết cùng chủ đề