Laravel中路由与中间件是分层协作关系:路由定义入口,中间件控制处理流程;应通过Route::group()或链式调用(如middleware()、prefix()、name())统一配置前缀、中间件、命名空间等属性,避免重复声明;需严格区分api(限流/绑定中间件组)与auth:api(Token认证中间件),并坚持web.php与api.php职责分离。

Laravel 中路由与中间件的配置是分层协作的关系:路由定义请求入口,中间件控制请求处理流程。关键不在于堆砌中间件,而在于按需、分层、不重复地施加逻辑。
路由分组统一管理公共属性
用 Route::group() 或链式调用(如 middleware()、prefix()、name())批量设置共享配置,避免逐条重复声明。
-
添加前缀:比如后台路由统一加
/admin,用->prefix('admin') -
绑定中间件:如登录后才能访问的区域,直接
->middleware(['auth', 'verified']) -
命名空间隔离:API 路由常配合
->namespace('Api'),让控制器自动定位到App\Http\Controllers\Api\*
区分中间件类型,避免混淆 api 和 auth:api
两者名字相似但职责完全不同,混用会导致认证失败或安全漏洞。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
-
api 是中间件组,定义在
app/Http/Kernel.php的$middlewareGroups['api']中,含throttle(限流)和bindings(模型绑定),不含认证逻辑 -
auth:api 是单体认证中间件,注册在
$routeMiddleware,依赖config/auth.php中的apiguard,只做 Token 校验 - 注册登录/注册接口时,应只用
api组(保障限流和绑定),不加auth:api;认证后接口才叠加auth:api
中间件绑定位置各有适用场景
全局、路由、控制器三个层级各司其职,推荐优先在路由层集中控制。
-
全局中间件(
$middleware):适用于所有请求,如维护模式检测、Cookie 加密,一般不放业务逻辑 -
路由中间件:最常用,清晰表达某类路径的访问约束,例如
Route::post('/login')->middleware('throttle:10,1') -
控制器中间件:适合对整个控制器统一加限制,可配合
except排除个别方法,如$this->middleware('auth:api')->except(['login', 'register'])
API 与 Web 路由分离是基础规范
Laravel 默认将两类路由拆开管理,这是结构清晰、配置解耦的前提。
-
routes/web.php处理带 Session、CSRF、视图渲染的用户交互请求,自动套用web中间件组 -
routes/api.php处理无状态 JSON 接口,自动套用api中间件组,不启用 Session 和 CSRF 验证 - 不要把 API 路由写进
web.php,也不要在api.php里返回视图——职责错位会引发 session 冲突或 token 无效等问题


















