症状
已认证用户收到 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 拦截的情况。
验证
以同一用户在补足角色或作用域后重试;端点成功,中间件日志确认所需能力已就位。