有时候中间件会有多种处理情况,这就需要往中间件传入参数来告知中间件目前是什么情况。
以下是摘抄:
除了请求实例$request
和闭包$next
之外,中间件还可以接收额外参数,我们还是以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'=>':'],function(){ Route::get('/write/laravelacademy',function(){ //使用Test中间件 }); Route::get('/update/laravelacademy',function(){ //使用Test中间件 }); }); Route::get('/age/refuse',['as'=>'refuse',function(){ return "18岁以上男子才能访问!"; }]);
使用的时候:test 就是中间件别名,需要在 app/Http/Kernel.php 里面配置 protected $routeMiddleware。
male 就是传入的第一个参数,如果多个参数,可以用逗号隔开。例如:'test:male,peter,age'