发现问题
刚开始看官方文档不清楚中间件参数怎么传递
解决
中间件还可以接收额外参数,我们还是以TestMiddleware为例,现在要求年龄在18岁以上的男性才能访问指定页面,handle方法定义如下:
public function handle($request, \Closure $next, $gender)
{
if($request->input('age')>=18 && $gender==$request->input('gender')){
return $next($request);
}else{
return redirect()->route('refuse');
}
}
对应的路由配置如下:
Route::group(['middleware'=>'test:male'],function(){
Route::get('/write/test',function(){
return "成年了!!";
});
});
Route::get('/age/refuse',function(){
return "18岁以上男子才能访问!";
})->name('refuse');
结果
访问
http://localhost/laravel/public/write/test
结果
跳转到 http://localhost/laravel/public/age/refuse
自然就访问到路由中的function中
18岁以上男子才能访问!
访问
http://localhost/laravel/public/write/test?age=20&gender=male
结果
成年了!!