【筆記整理】laravel HTTP中間件的介紹及創建

演明
發布: 2021-09-15 11:42:30
原創
1241 人瀏覽過

以下是我看php中文網的影片整理的筆記,供大家參考。以下是一些基礎知識,如果對基礎知識不熟悉的可以看看。我上一遍文章分享的是composer安裝laravel,想看更多文章,追蹤我,希望能提供協助。

中間件其實就是在路由上面加了一層過濾或是一層保護,前綴和命名空間都是作為group的數組參數傳進去的,中間件也是作為group的數組參數傳進去

一、中間件書寫

新增中間件前

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });
登入後複製

新增web中間件後

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });
登入後複製

web中間件可以用session功能,啟用CSRF保護

Route::get('/',function(){ session(['key'=>123]); return view('welcome'); });
登入後複製

再設定一個路由,用來輸出session

Route::get('/test',function(){ echo session('key'); return 'test'; });
登入後複製

但因為不在一個中間件裡,所以取不出session的值

#下面我們設定一下把路由放到一個分組的中間件

Route::group(['middleware'=>['web']], function () { Route::get('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });
登入後複製

系統預設的web中間件,中間件在Kernel.php中

使用web中間件時,才會使用session

二、自己手動在Kernel.php檔案中定義一個後台管理雲端登入的中間件

定義前:

protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ];
登入後複製

定義後:

protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'admin.login' => \App\Http\Middleware\AdminLogin::class, ];
登入後複製

在cmd視窗切換到專案目錄可以用指令建立中間件

php artisan make:middleware AdminLogin
登入後複製

然後在Middleware資料夾查看AdminLogin.php檔案


        
登入後複製

然後呼叫剛才建立的中間件

Route::group(['middleware'=>['web','admin.login'],], function () { Route::get('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });
登入後複製

三、後台超級管理員的驗證

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () { Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证 }); Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () { Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面 Rount::resource('article','ArticleController'); });
登入後複製

任何一個使用者都可以登錄,但是如果登入了成功,就進入歡迎頁面,沒有登入成功就在登入頁面,因為登入的資訊存到session裡,所以我們利用session的資訊判斷是否登入

模擬登入是將登入資訊寫到session裡面,然後找到Admin包下IndexController控制器

1]); //登录信息用admin存储 return '

登录

' } }

登入後複製

我們在中間件裡輸出session測試一下

然後在Middleware資料夾查看AdminLogin.php檔案


        
登入後複製

驗證:

########################### #我們先登入一下,然後造訪歡迎頁面,如果輸出1,表示我們設定成功了(登入時把1存到session裡,然後進入歡迎頁面,歡迎頁面會呼叫中間件的AdminLogin.php,),## #######我們繼續設定#########Middleware資料夾的AdminLogin.php檔案###

        
登入後複製
###以上步驟是我學習的筆記,我把要操作的步驟或重點的記了下來,如果哪有不懂可以留言。謝謝大家支持。希望能為大家提供幫助,如果想看更多信息,關注我,下一篇繼續分享。 ###

以上是【筆記整理】laravel HTTP中間件的介紹及創建的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!