thinkphp6全局授权中间件需创建authmiddleware类实现token解析、用户查询与权限校验,并在app/middleware.php中注册;仅作身份认证,细粒度授权应在控制器或服务层处理。

ThinkPHP6 配置全局授权中间件,核心是创建一个处理身份验证逻辑的中间件类,并在全局中间件配置中注册它,确保所有请求(或指定范围)在进入控制器前完成权限校验。
创建授权中间件类
在 app/middleware/ 目录下新建文件,例如 AuthMiddleware.php:
该类需实现 handle 方法,在其中完成 Token 解析、用户查询、权限判断等逻辑。示例关键代码:
- 从请求头(如 Authorization: Bearer xxx)或参数中提取 token
- 使用 JWT 或自定义方式验证 token 有效性
- 查询用户信息并写入 Request 对象(如 $request->user = $user)
- 若验证失败,直接返回 401 响应,不执行后续逻辑
- 若通过,调用 $next($request) 放行
注册为全局中间件
打开 app/middleware.php 文件(注意:不是 config/middleware.php),在返回的数组中加入该中间件类:
return [
\app\middleware\AuthMiddleware::class,
// 其他中间件...
];
此配置使中间件对所有 HTTP 请求生效(含 API 和页面请求)。若项目启用多应用模式(如 admin、api 独立目录),需在对应应用的 middleware.php 中单独注册,全局配置不生效。
补充说明:权限控制粒度
全局中间件适合统一鉴权(如强制登录),但不建议在其中做细粒度权限(如“能否编辑某条数据”)。更合理的做法是:
- 全局中间件只负责「身份认证」(Authentication)——确认你是谁
- 具体接口的「权限授权」(Authorization)应在控制器或服务层校验(如检查用户角色、数据归属)
- 如需路由级权限,可用路由中间件或控制器内 $middleware 属性按需绑定
调试与验证要点
上线前建议验证以下行为:
- 未携带有效 token 的请求是否返回 401
- token 过期或签名错误时是否被拦截
- 合法请求是否能正常访问,并可在控制器中通过 $this->request->user 获取用户信息
- OPTIONS 预检请求是否不受影响(如已配置 CORS 中间件,需注意执行顺序)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











