← 中文资源

简体中文版本

HTTP 403 Forbidden — 已认证但无权限

诊断 HTTP 403:区分认证与授权,检查角色、作用域、IP 规则与 WAF 拦截。

阅读英文原文

症状

已认证用户收到 403 Forbidden。凭据显然有效,因此重新登录并不能解决。

诊断

记录身份并与路由策略比对:

app.use((req, res, next) => {
  console.log('sub=', req.user?.sub, 'scopes=', req.user?.scopes);
  next();
});

从不同网络测试,以排除 IP 或 WAF 过滤。

修复

授予所需能力或修正归属校验:

requireScope('items:write'); // token lacks this scope -> 403
if (item.ownerId !== req.user.sub) return res.sendStatus(403);

通过响应头或正文区分 WAF 拦截的情况。

验证

以同一用户在补足角色或作用域后重试;端点成功,中间件日志确认所需能力已就位。