Directus SDK静态令牌认证失败:401未授权问题排查求助
Directus最新SDK静态令牌认证401(Invalid user credentials)问题解决
修复后的客户端初始化代码
首先修正客户端配置的链式调用写法:
import { createDirectus, staticToken, rest, readItems } from "@directus/sdk"; const client = createDirectus(process.env.NEXT_PUBLIC_API_URL as string) .with(rest()) .with(staticToken(process.env.ADMIN_TOKEN as string)); export default client;
排查步骤
验证环境变量加载情况
打印process.env.ADMIN_TOKEN和process.env.NEXT_PUBLIC_API_URL的值,确认令牌不为空、API地址格式正确(带http/https协议,无多余尾斜杠)。注意:Next.js中,非NEXT_PUBLIC_前缀的环境变量无法在客户端组件中访问,若你在客户端执行请求,需将ADMIN_TOKEN改为NEXT_PUBLIC_ADMIN_TOKEN(生产环境不建议,敏感令牌应仅在服务端使用),或把请求逻辑移至服务端组件/API路由。检查令牌权限与有效性
登录Directus后台,确认该管理员用户的静态令牌未过期,且对应角色对posts表拥有读取权限(即使是管理员角色,也需确认权限未被误修改)。排除认证方式冲突
确保未同时启用其他认证扩展(如auth()),静态令牌认证与用户密码认证不能同时生效,需移除多余的认证扩展配置。直接测试令牌有效性
用Postman等工具发送GET请求到{{API_URL}}/items/posts?fields=id,title,在请求头中添加Authorization: Bearer {{ADMIN_TOKEN}},如果仍返回401,说明令牌本身或权限存在问题,需重新生成令牌或检查角色权限配置。
内容的提问来源于stack exchange,提问作者beginnerspirit
相关产品推荐
相关产品推荐

