我用 php artisan make:auth生成了一個登錄注冊的模塊我分析源碼的時候 發(fā)現(xiàn) app\Http\Controllers\Auth\LoginController.php內(nèi)存在這樣一段代碼:????public?function?__construct()
????{
????????$this->middleware('guest',?['except'?=>?'logout']);
????}我看到$this->middleware代碼后先是一愣... ?后來在網(wǎng)上找到資料原來這是使用了一個中間件但我對后面的['except' => 'logout']); 實在不懂,尋求大神給予講解一下。另外:except是源碼里自己定義的 還是laravel自帶的?
2 回答
已采納

流逝在指尖活在當下
TA貢獻4條經(jīng)驗 獲得超1個贊
這個是laravel框架里面自帶的,中間件就是控制用戶是否能訪問的一種機制。
在文件?vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php 77行
????/** ?????*?Determine?if?the?given?options?exclude?a?particular?method. ?????* ?????*?@param??string??$method ?????*?@param??array??$options ?????*?@return?bool ?????*/ ????protected?static?function?methodExcludedByOptions($method,?array?$options) ????{ ????????return?(isset($options['only'])?&&?!?in_array($method,?(array)?$options['only']))?|| ????????????(!?empty($options['except'])?&&?in_array($method,?(array)?$options['except'])); ????}
在Controller設(shè)置中間件的時候可以設(shè)置:?only?針對某個方法添加中間件,或者?except?除了這個方法之外的方法都添加中間件
methodExcludedByOptions 方法是判斷是否在這個方法中使用中間件,返回值是布爾值 true使用中間件,false不使用中間件
排除特定的方法不使用中間件
$this->middleware('guest:admin',?['except'?=>?'login']);
在指定的方法中使用中間件
$this->middleware('guest:admin',?['except'?=>?'logout']);
推薦將中間件寫在路由中
Route::get('logout',?'AuthController@logout')->middleware('auth:admin');
- 2 回答
- 0 關(guān)注
- 4776 瀏覽
添加回答
舉報
0/150
提交
取消