You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express集成Auth0角色权限遇No authorization token was found错误求助

问题解决方法

首先解决"No authorization token was found"报错

你的报错直接由以下两个原因导致:

  • 代码中全局挂载了checkJwt中间件:你写了server.use(checkJwt);,这会让所有未经单独路由配置的请求都必须携带JWT令牌,包括你不需要管控的SPA页面路由、静态资源路由,直接触发无令牌报错。直接删除这行全局挂载代码即可,checkJwt只需要在你需要管控的API路由上单独声明即可,比如你已经写的/api/private、/api/private-scoped路由已经单独加了checkJwt,不需要全局挂载。
  • 两套身份校验逻辑混用未适配:你同时用了express-openid-connect(用于页面登录,基于Cookie会话识别身份)和express-jwt(用于API校验,基于请求头的Bearer令牌识别身份)。作为SPA应用,前端调用受管控的API接口时,必须先从Auth0获取到access_token,每次请求时在请求头中携带Authorization: Bearer <你获取到的access_token>,否则express-jwt无法读取到令牌就会抛出对应错误。

完成Auth0角色权限配置步骤

  1. 登录Auth0后台,进入你创建的API项目,先定义你需要用到的权限,比如你代码中用到的admin:read,需要先在API的Permissions选项卡下完成创建。
  2. 进入Roles选项卡创建对应的角色,比如管理员、普通用户等,给每个角色分配对应的权限。
  3. 给你需要分配权限的用户绑定对应角色,或者在Auth0的登录Action流中添加自定义逻辑,把用户的角色、权限信息写入access_token的自定义声明中。
  4. 前端发起Auth0授权请求时,必须指定正确的audience(即你代码中写的https://villatranquila.herokuapp.com/)和需要的scope参数,这样Auth0返回的access_token中才会包含你需要的权限字段,jwtAuthz中间件才能正常校验权限。

其他注意事项

你当前/api/private-scoped路由的注释说明要求的scope是read:messages,但jwtAuthz中间件中写的校验规则是['admin:read'],二者不匹配的话后续会触发权限不足报错,需要根据你的实际需求统一二者的值。

内容的提问来源于stack exchange,提问作者Martin Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:54:03