Laravel内置中间件别名直接可用,定义于app/Http/Kernel.php的$routeMiddleware数组中;如auth、guest、verified、throttle等用于Web场景,auth:sanctum、auth:api等用于API场景,can用于权限控制。

Laravel 默认提供了一批开箱即用的中间件别名,无需额外注册就能直接在路由、控制器或中间件组中调用。这些别名定义在 app/Http/Kernel.php 的 $routeMiddleware 数组里,是框架内置逻辑的快捷入口。
常用内置中间件别名(Web 场景)
以下别名默认启用,适用于 web 中间件组下的普通页面请求:
-
auth:检查用户是否已登录,未登录则重定向到
/login;底层对应\App\Http\Middleware\Authenticate::class -
guest:确保用户未登录,常用于登录页、注册页;对应
\App\Http\Middleware\RedirectIfAuthenticated::class(注意:它实际是“反向 auth”,逻辑为已登录则跳转) -
verified:要求用户邮箱已验证,未验证则跳转到提示页;依赖
MustVerifyEmailtrait 和邮件验证机制 -
throttle:基于 IP 或用户 ID 限流,例如
throttle:60,1表示每分钟最多 60 次请求;需缓存驱动支持(推荐 Redis) -
bindings:自动解析路由隐式绑定的 Eloquent 模型(如
/posts/{post}中的$post) - signed:验证签名 URL 的有效性(用于临时链接,如密码重置、邮件确认)
-
prevent_requests_during_maintenance:配合
php artisan down使用,拦截维护模式下的请求
API 场景专用别名
这些别名默认配置在 api 中间件组中,适合前后端分离项目:
- auth:sanctum:使用 Sanctum Token 进行 API 认证(需提前安装并配置 Sanctum)
-
auth:api:基于 token 的传统 API 认证(通常搭配
token字段或Authorization: Bearer头) - throttle:api:专为 API 设计的限流策略,键名含路由签名与 IP,TTL 可配置
权限与资源控制相关别名
部分别名来自 Laravel 自带的授权机制,不依赖第三方包:
-
can:校验用户是否具备某能力,如
can:edit,App\Models\Post或can:publish posts -
can:admin:等价于
can:admin,但更推荐用策略类统一管理
注意要点
这些别名不是魔法,本质是字符串映射到具体类。它们在 app/Http/Kernel.php 中明确定义,比如:
'auth' => \App\Http\Middleware\Authenticate::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
若修改或删除某项,对应别名将失效。自定义中间件需手动添加别名才能使用。


















