🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **路由中间件** 可以使用路由中间件,注册方式如下: ~~~ Route::rule('hello/:name','hello') ->middleware(\app\middleware\Auth::class); ~~~ 或者对路由分组注册中间件 ~~~ Route::group('hello', function(){ Route::rule('hello/:name','hello'); })->middleware(\app\middleware\Auth::class); ~~~ 如果需要传入额外参数给中间件,可以使用 ~~~ Route::rule('hello/:name','hello') ->middleware(\app\middleware\Auth::class,'admin'); ~~~ 如果需要定义多个中间件,使用数组方式 ~~~ Route::rule('hello/:name','hello') ->middleware([\app\middleware\Auth::class,\app\middleware\Check::class]); ~~~ 可以统一传入同一个额外参数 ~~~ Route::rule('hello/:name','hello') ->middleware([\app\middleware\Auth::class, \app\middleware\Check::class], 'admin'); ~~~ ## **示例** 1、新建控制器app\index\controller\Test.php ``` namespace app\index\controller; use app\BaseController; class Test extends BaseController { public function hello() { return 'hello'; } } ``` 2、 在app\index\route\route.php路由文件中将hello路由到该控制器的hello方法 ``` use think\facade\Route; Route::rule('hello','test/hello','GET') ->middleware([\app\index\middleware\Test::class]); ``` 3、在app\middleware.php文件中配置路由中间件 >[danger] 配置路由中间件在上一步的路由文件中就配置了,所以步骤3这一步是多余的 > 在路由文件中使用middleware方法配置中间件的好处是可以针对控制器的某个路由方法,而不是整个index模块 > 如果在鲁豫文件中少了`->middleware([\app\index\middleware\Test::class]);`这一步则需要这一步 ``` // 全局中间件定义文件 return [ // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 // \think\middleware\SessionInit::class app\index\middleware\Test::class, ]; ``` 4、新建路由中间件app\index\middleware\Test.php ``` namespace app\index\middleware; class Test { public function handle($request, \Closure $next) { if ($request->param('name') == 'think') { return redirect('index/think'); } return $next($request); } } ``` 更多中间件的用法参考架构章节的[中间件](https://www.kancloud.cn/manual/thinkphp6_0/1037493)内容。