1

我正在尝试将 JWT 令牌传递给 AppSync 中的嵌套查询,以检查用户是否有权请求此类数据。

问题是 AppSync不允许我将 JWT 令牌从父查询转发到任何子解析器

例子 :

mutation test {
emailSignIn(input: {email: "0@gmail.com", password: "XYZ"}) {
token
currentUser {
  id
  profilePicture {
    uuid
  }
  ... on Client {
    lastName
    pleadingList{
      id
      pleadingFiles {
        uuid
      }
      pleadingParticipantSlots {
        id
        participant {
          id
        }
      }
    }
  }

}
}
}

这里profilePicture, pleadingList, pleadingFiles, pleadingParticipantSlots,participant是子查询,我希望能够识别谁在执行每个子查询,而不仅仅是主/父查询

有什么解决办法吗?

我已经尝试过的:

问题是,当我将令牌动态添加到主要结果时,它并不总是有效(从某种意义上说,如果我从查询中得到的是一个项目数组,而子查询是每个项目的启动,那么我无法访问每个子请求中的令牌,因为这$ctx.source将只是没有令牌的项目。

  • 我还尝试了将 JWT 令牌添加到的管道,ctx.stash但更糟糕的是,因为ctx.stash(和ctx.args)在任何子请求之前被清除

所以我想要一种将变量传递给我所有子解析器的方法,或者一种将我的标头从父请求保留到嵌套查询的方法。

我让它工作的唯一方法(它非常难看,我不想这样做;))是每次在前端添加令牌作为查询和子查询参数......

喜欢:

mutation test {
emailSignIn(input: {email: "0@gmail.com", password: "XYZ"}) {
token
currentUser {
  id
  profilePicture(token: "blablabla") {
    uuid
  }
  ... on Client {
    lastName
    pleadingList(token: "blablabla") {
      id
      pleadingFiles(token: "blablabla") {
        uuid
      }
      pleadingParticipantSlots {
        id
        participant(token: "blablabla") {
          id
        }
      }
    }
  }

}
}
}

我有点迷茫,在 AWS AppSync 文档中找不到任何相关内容。有什么办法吗?还是我想错了?

谢谢

4

1 回答 1

0

目前,AppSync 不支持将 JWT 令牌从父解析器传递到子解析器。您提到的解决方法可能是当前选项之一。

于 2019-04-17T01:00:22.150 回答