我正在尝试将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将仅是没有令牌的项目。
所以我想要的是将变量传递给所有子解析器的方法,或者是将标头从父请求传递到嵌套查询的方法。
我使它起作用的唯一方法(这很丑陋,我不想这样做;))是每次在前端添加令牌作为查询和子查询参数...
like:
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文档中找不到任何相关的内容。 有什么办法吗?还是我觉得错了?
谢谢
答案 0 :(得分:0)
Currently, AppSync does not support passing JWT tokens from the parent to child resolver. The workaround you have mentioned might be one of the current options.