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

使用Neo4j和GraphQL创建节点时如何将$jwt.sub绑定到externalId属性

问题原因

你对@auth指令的bind参数功能理解有误,这个参数仅做权限校验,不会自动为字段赋值:

  • 你配置的规则要求CREATE/UPDATE操作时,Person的externalId必须等于JWT中的sub值
  • 你提交的mutation没有传externalId字段,创建出的节点externalId为null,不满足校验条件,因此抛出FORBIDDEN错误

解决方案

给externalId字段加上@default指令,指定默认值为JWT的sub属性,创建节点时如果没有手动传值,会自动填充该字段:

type Person {
  id: ID! @id
  externalId: ID! @default(value: "$jwt.sub") # 新增@default指令,建议同时设为非空避免异常空值
  name: String!
}

extend type Person
  @auth(
    rules: [
      { operations: [CREATE, UPDATE], bind: { externalId: "$jwt.sub" } }
    ]
  )

修改后你原本的mutation不需要调整任何参数即可正常执行,externalId会自动填充为当前登录用户JWT的sub值,同时@auth的校验规则也会正常生效,避免用户手动传入不属于自己的externalId。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:07