Laravel中间件

在请求之前

`

在请求之

`

在请求之前

1
2
3
4
5
6
7
<?php
class BeforeMiddleware {
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */
public function handle($request, Closure $next) { //在请求处理前执行业务逻辑操作
return $next($request);
}
}

在请求之后

1
2
3
4
public function handle($request, Closure $next) {
$response = $next($request); //在请求处理后执行业务逻辑操作
return $response;
}

在路由中给中间件发送参数,这里的test1:male就是给test1中间件传递male参数

1
2
3
4
5
6
Route::group(['middleware' => 'test1:male'], function () {
Route::get('/write/laravelacademy', function () { //使用Test中间件
});
Route::get('/update/laravelacademy', function () {//使用Test中间件
});
});

然后中间件可以接收参数,这里的$gender变量便是接收的参数

1
2
3
4
5
6
7
public function handle($request, Closure $next, $gender) {
if ($request->input('age') >= 18 && $gender == $request->input('gender')) {
return $next($request);
} else {
return redirect()->route('refuse');
}
}