多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## lumen使用中间件 ### 注册中间件 ### 全局中间件 如果你希望中间件在应用处理每个 HTTP 请求期间运行,只需要将该中间件的类添加到 bootstrap/app.php 文件中的 $app->middleware() 方法即可: ``` $app->middleware([ App\Http\Middleware\OldMiddleware::class ]); ``` ### 为路由分配中间件 如果你想为特定路由指定中间件,就应该在 bootstrap/app.php 文件中的 $app->routeMiddleware() 方法中注册中间件的同时为中间件起一个简短的别名: ``` $app->routeMiddleware([ 'auth' => App\Http\Middleware\Authenticate::class, ]); ``` 一旦你在 HTTP 内核中定义了中间件后,就可以在路由的可选数组中使用该中间件: ``` $router->get('admin/profile', ['middleware' => 'auth', function () { // }]); ``` 你也可以一次为路由指定多个中间件: ``` $router->get('/', ['middleware' => ['first', 'second'], function () { // }]); ``` 或者,在使用 uses 键指定控制器操作的路由中,添加控制器路由中间件: $router->get('admin/profile', [ 'middleware' => 'auth', 'uses' => 'AdminController@showProfile' ]); ### 中间件参数 中间件可以接受额外的自定义参数。例如,如果你想在执行相应的操作之前验证经过认证的用户是否拥有给定的「角色」,可以创建一个 RoleMiddleware 中间件,该中间件接受一个角色名称作为额外的参数。 额外的中间件参数将会在中间件参数 $next 之后传入。 ``` <?php namespace App\Http\Middleware; use Closure; class RoleMiddleware { /** * Run the request filter. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string $role * @return mixed */ public function handle($request, Closure $next, $role) { if (! $request->user()->hasRole($role)) { // Redirect... } return $next($request); } } ``` 在定义路由时,可以通过用 : 分隔中间件名称和参数来指定中间件参数。多个参数应以逗号分隔: ``` $router->put('post/{id}', ['middleware' => 'role:editor', function ($id) { // }]); ```