場景:活動開始前只能訪問宣傳頁面,開始后才可以訪問其他頁面:
步驟:
新建中間件,
注冊中間件,
使用中間件,
中間件的前置和后置操作。
控制器:
public function activity0(){
return '活動快要開始啦,敬請期待';
}
public function activity1(){
return '活動頁面1';
}
public function activity2(){
return '活動頁面2';
}
路由:
Route::any('activity0',['uses'=>'StudentController@activity0']);
Route::any('activity1',['uses'=>'StudentController@activity1']);
Route::any('activity2',['uses'=>'StudentController@activity2']);
在App\Http\Middleware下創建中間件Activity.php:
namespace App\Http\Middleware;
use Closure;
class Activity{
public function handle($request,Closure $next){
if(time() < strtotime('2018-01-01')){
return redirect('activity0');
}
return $next($request);
}
}
//注冊中間件,在Kernel.php中的$routeMiddleware數組中增加
protected $routeMiddleware = [
'activity' => \App\Http\Middleware\Activity::class,
];
使用中間件,路由中的設置
//宣傳頁面不需要中間件驗證,不能放里邊
Route::any('activity0',['uses'=>'StudentController@activity0']);
Route::group(['middleware'=>['activity']],function(){
Route::any('activity1',['uses'=>'StudentController@activity1']);
Route::any('activity2',['uses'=>'StudentController@activity2']);
});
//后置中間件
public function handle($request,Closure $next){
$response = $next($request);
echo $response;
echo '我是后置操作';
}