如何通过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
相关产品推荐
相关产品推荐

