laravel利用中間件做防非法登錄和權限控制

laravel框架的中間件非常好用,使得我們的防非法和rbac可以簡單快速的實現

中間件就是控制路由的訪問,進行分類並統一管理

1、首先我們打開artisan輸入下面的命令行,創建一箇中間件文件

php artisan make:middleware AdminLogin

執行命令後我們會發現Middleware文件夾會多出一個AdminLogin文件

2、然後我們打開kernel.php,將這個中間件加入到路由中間件中

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'admin.login' => \App\Http\Middleware\AdminLogin::class,
    ];
可以看到我們在這個數組用一個下標爲admin.login指向了這個中間節類

3、然後在路由上將這個中間件加入關聯上

Route::group(['middleware' => ['web','admin.login.login']], function () {
  
    Route::get('/admin/login/login','Admin\LoginController@login');
    //登錄頁面
    Route::get('/admin/index/index','Admin\IndexController@index'); 

    //後臺首頁路由


});

這裏一定要將登錄的路由和後臺路由放到一個關聯中間件中,只有放到同一個中間件中,session才能共用

4、最後我們在Middleware下的AdminLogin.php中修改一下原本的代碼



在這裏我們做一個簡單的小判斷,判斷一下有沒有session存在,如果有的話就直接走我們現在訪問的路由,如果沒有session就給他重定向到登錄頁面

一個簡單的防非法登錄就可以用了

這種方法我們也可以拿來做rbac,也是建立一箇中間件,進行session判斷,查庫中該管理員是否對有該權限訪問該路由

此時您可能會用到

$route = $request->path();




他的作用就是獲取到你當前訪問的路由再進行判斷可不可以訪問大笑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章