You need to enable JavaScript to run this app. 如何通过GraphQL获取Directus用户数据?权限正确却仅显示两个查询字段怎么办
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GraphQL获取Directus用户数据?权限正确却仅显示两个查询字段怎么办

Directus GraphQL 查询用户数据的问题排查与实现

Directus 原生支持通过 GraphQL 接口拉取内置的用户数据集合,你遇到的「GraphQL 查询入口仅展示少量可用字段」的情况,核心原因是权限的细粒度配置未覆盖全量查询需求,或是 GraphQL 动态 schema 未同步最新权限规则。

权限配置的双层校验要求

Directus 的权限体系对内置用户集合directus_users做了拆分校验,仅开启集合级读权限不足以放开全字段查询:

  • 第一层:集合级权限。进入角色管理页,找到当前访问令牌所属角色的权限配置,定位到directus_users集合,开启读权限开关
  • 第二层:字段级权限。在同个权限配置的「字段权限」区块,手动勾选所有需要通过接口返回的用户字段。未被勾选的字段不会出现在 GraphQL 生成的 schema 中,最终就会出现仅暴露基础可用字段的现象。

动态 Schema 的刷新机制

Directus 的 GraphQL schema 是按照当前请求的权限范围动态生成的,并非固定结构。修改完权限配置后,需要在 GraphQL Playground 中手动触发 schema 刷新,才能看到最新的可用字段列表,不要用修改权限前缓存的旧 schema 判断配置是否生效。

标准查询示例

权限与 schema 配置完成后,可直接按照 GraphQL 语法编写查询语句:
查询全量用户的指定字段:

query {
  directus_users {
    id
    email
    first_name
    last_name
  }
}

查询指定ID的单个用户:

query {
  directus_user(id: "目标用户的UUID标识") {
    id
    email
    role {
      name
    }
  }
}

提示:用户手机号、第三方绑定信息、最后登录时间这类敏感字段默认不对普通角色开放,需要在字段权限中单独放行后才可查询。


内容的提问来源于stack exchange,提问作者Cem Kaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 05:54:04