Hasura 是否支持生成基于角色的 introspection 功能?
Hasura 按角色自省(introspection per role)实现方案
完全可以实现,这本身就是 Hasura 原生支持的能力,刚好适配你动态渲染前端权限可见内容的需求。
- 调用 GraphQL 自省接口时,在请求头中添加当前登录用户的角色标识
X-Hasura-Role,如果你的权限规则关联了用户ID等其他属性,也可以同步传入X-Hasura-User-Id这类 Hasura 会话变量 - Hasura 会自动基于当前传入角色配置的权限规则,过滤自省结果:没有查询权限的表/字段、没有执行权限的 Mutation 操作都会直接从返回的 Schema 中移除,最终返回的结果只会包含该角色有权限访问的所有 GraphQL 资源
- 你可以直接基于过滤后的自省结果做前端渲染:动态生成可查询的字段选项、有权限的操作按钮,不需要在前端额外硬编码权限判断逻辑,也能避免前后端权限规则不一致的问题
补充注意:如果自省请求没有携带
X-Hasura-Role头,Hasura 会默认使用anonymous匿名角色的权限返回结果,如果你的业务没有开放匿名访问,所有自省请求都必须携带正确的角色头。你也可以在 Hasura 安全配置中单独控制每个角色的自省接口调用权限,避免未授权角色拉取 Schema 信息。
内容的提问来源于stack exchange,提问作者Georg Hartmann
相关产品推荐
相关产品推荐

