中间件
server/app/middleware/ 下现有中间件及其职责如下。
| 类 | 挡什么 |
|---|---|
InstallGuardMiddleware | 安装锁:未安装时拦业务接口并导向安装向导 |
AdminAuthMiddleware | 管理端认证:只接受 admin scope 的 JWT |
AdminPermissionMiddleware | 管理端权限:按 #[Permission] / #[PermissionSkip] 判定,无注解默认拒绝 |
ApiAuthMiddleware | 用户端认证:只接受 user scope 的 JWT |
CorsMiddleware | 跨域:按来源白名单放行,处理 OPTIONS 预检 |
LocaleMiddleware | 语言:把当前请求 locale 写入 support\Context |
AdminLogMiddleware | 操作日志:认证组最内层,写请求异步入队落库 |
LoginRateLimitMiddleware | 登录限流:按 IP + 账号计失败次数并锁定 |
RequestContextMiddleware | 请求追踪:种下 / 回写 X-Trace-Id |
StaticFile | 静态资源:禁止点号隐藏路径,并加 nosniff |
挂载位置
全局 server/config/middleware.php 只有安装守卫:
php
return [
'' => [
app\middleware\InstallGuardMiddleware::class,
],
];其余挂在路由上(见 server/config/route.php):
- API 外层
$apiOuter(/adminapi、/api):InstallGuardMiddleware→RequestContextMiddleware→LocaleMiddleware→CorsMiddleware - 管理端认证组
$adminAuth:AdminAuthMiddleware→AdminPermissionMiddleware→AdminLogMiddleware - 用户端认证组
$apiAuth:ApiAuthMiddleware - 登录限流:挂在
/adminapi/auth/login与/api/auth/login StaticFile:挂在server/config/static.php,不是全局 HTTP 中间件
不要把只在路由组上出现的类写成「全局中间件」。