laravel学习笔记3-中间件
上回简单介绍了路由控制器,本编将会为大家介绍中间件的使用。中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求,我们可以用来处理诸如字符验证、身份验证等等的工作。中间件不单单可以前置执行工作还可以后置执行工作。如我们可以前置验证身份信息,后置处理身份信息是否需要输出前端。
Laravel 已经内置了一些中间件,包括身份验证、CSRF 保护等。所有的中间件都放在 app/Http/Middleware 目录内。
创建中间件
php artisan make:middleware CheckAge
该命令将会在 app/Http/Middleware 目录内新建一个 CheckAge 类。 在这个中间件内,我们定义一个handle方法将 age 参数大于 200 时允许向下执行路由,否则,会将用户请求重定向到 home URI 。
``` <?php
namespace App\Http\Middleware;
use Closure;
class CheckAge { /** * 处理传入的请求 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($request->age <= 200) { return redirect('home'); }
return $next($request);
}
} ```
路由器添加中间件
在 routes/web.php 文件中定义你的 web 页面路由,要给路由组中定义的所有路由分配中间件,可以在路由组中使用 middleware 键,中间件将会依照列表内指定的顺序运行:Route::group(['middleware' => 'CheckAge'], function () { Route::get('user/addUser/username/xiaohei/age/20', 'UserController@addUser'); });
当我们访问'http://127.0.0.1/blog/public/user/addUser/username/xiaohei/age/20'时,就会验证age的参数是否符合要求,不符合则返回到home当中。
前置中间件 / 后置中间件
中间件运行在请求之前或之后取决于中间件本身。例如,以下中间件会在请求被应用处理 之前 执行一些任务``` <?php
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware { public function handle($request, Closure $next) { // 执行动作
return $next($request);
}
} ```
这个中间件会在请求被应用处理 之后 执行它的任务:
``` <?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request);
// 执行动作
return $response;
}
} ```
更多的中间件运用不一一细说,有需要可以到“https://d.laravel-china.org/docs/5.4/middleware”进行查看