laravel中间件
自定义中间件
创建中间件
//格式: php artisan make:middleware <中间件名称>
php artisan make:middleware CheckLog
上面的命令会在app/http/middleware目录下生成一个CheckLog.php文件,在文件中的handle方法中可以写验证逻辑,针对用户是否已经登录来写一个中间件。
public static handle($request,Closure $next)
{
//使用laravel自带的Auth类里面的check()方法来验证用户是否已经登录
if(!\Auth::check())
{
//没登录就重定向到登录界面
return redirect()-> route('login');
}
return $next($request);
}
中间件可以想象为一系列HTTP请求,必须经过才能进入到你应用的层。每一层都会进行检查,是否符合某些条件,如果不符合甚至可以在请求访问应用之前完全拒绝掉。
注册中间件
全局中间件
如果希望中间件在处理每个HTTP请求期间运行。只要在app/Http/Kernel.php中的$middleware属性中列出这些中间件。
路由中间件
如果要为指定的路由分配中间件,首先应该在app/Http/kernel.php文件中为中间件分配一个键,若要加入自定义的中间件,只需在$routeMiddleware列表中为其分配一个自定义键。
中间件组
某些时候你希望使用一个键将多个中间件打包成一个组,方便把他们应用到路由上去,这时候就可以使用HTTP核心的$middlewareGroups属性。
使用中间件
一旦在HTTP内核中定义了中间件,就可以通过middleware方法为路由分配中间件:
Route::get('/',function(){
//内容
})->middleware('自定义中间键名');
也可以为路由分配多个中间件:
Route::get('/',function(){
//内容
})->middleware('自定义中间键名1','自定义中间键名2');
中间件组可以使用于单个中间件相同的语法分配给路由和控制器操作,同样中间件使得一次将多个中间件分配给一个路由更加方便。
Route::get('/', function () {
//
})->middleware('web');
Route::group(['middleware' => ['web']], function () {
//
});