laravel5 的中間件的使用 (1)
1.創建中間件
php artisan make:middleware _Name_Middleware
2.注冊中間件
2.1 中間件注冊在 Kennel.php 里面
2.2 默認的存放在此處,會自動調用
/** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, #可在此處進行注冊 如
'App\Http\Middleware\AfterMiddleware',
];
2.3 還有一種觸發的方式,就是 從Route進行觸發的
2.3.1 首先需要注冊他,即
/** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, #注冊一個 中間件 'demo.before' => 'App\Http\Middleware\BeforeMiddleware', ];
他的使用和默認的有所不同,他想要在 router.php 中 使用 Router:: 的時候觸發
<?php Route::group(['middleware' => ['web']], function () { Route::get('/', function () { return view('welcome'); }); Route::group(['prefix' => 'demo'],function(){
Route::get('after', ['as'=>'home.after.ware' , 'uses' => 'HomeController@after']);
}); });
此處的代碼是這樣子的,當我們 訪問的時候,他便會 進行自動使用中間件
3. 主要說說第二種方式的觸發,可以看到
Kernel.php 處的 middleware 的 demo.before
'demo.before' => 'App\Http\Middleware\BeforeMiddleware',
與 Router.php 處的 路由 demo --> before 對應
Route::group(['prefix' => 'demo'],function(){
Route::get('before', ['as'=>'home.before.ware' , 'uses' => 'HomeController@before']);
});
OK,寫的不好之處,望指正
