Laravel中如何为路由组同时应用两个独立中间件?
在Laravel路由组中同时应用多个独立中间件的方法
当然可以!完全不用合并中间件或者把逻辑移到控制器构造函数里,Laravel原生就支持在路由组中直接指定多个独立的中间件,完美满足你想保留中间件独立性的需求。
你只需要把原来middleware字段的单个字符串值改成数组形式,把两个中间件的名称依次放进数组里就行。比如原来的代码是:
Route::group(['middleware' => ('auth_guest'), 'prefix' => 'guest/'], function() { // 60条路由 });
修改后就变成这样:
Route::group([ 'middleware' => ['auth_guest', 'your_second_middleware'], // 这里放入两个独立中间件 'prefix' => 'guest/' ], function() { // 你的60条路由都在这里 });
这里还有两个小细节需要注意:
- 中间件执行顺序:Laravel会严格按照数组里的顺序依次执行中间件,如果你的两个中间件有逻辑依赖(比如一个需要另一个先完成某些操作),一定要调整好数组里的顺序
- 带参数的中间件:如果某个中间件需要接收参数,也可以用
中间件名:参数的字符串形式,比如['auth_guest:admin', 'your_second_middleware:read-only']
这样改完之后,整个路由组里的60条路由都会自动应用这两个独立的中间件,完全不用改动控制器或者合并中间件逻辑。
内容的提问来源于stack exchange,提问作者prgrm
相关产品推荐
相关产品推荐

