Skip to content

中间件 ​

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 中间件

不要把只在路由组上出现的类写成「全局中间件」。

基于 MIT 许可发布