我的项目使用认知用户池作为默认的身份验证方法,并对我的自定义graphql解析器使用iam。
我一直在使用AppSync控制台对我的查询/突变进行测试。
我在这个schema.graphql文件中实现了用户类型和组类型之间的多到多关系。
type User
@model
@auth(
rules: [
{ allow: owner, ownerField: "id", operations: [create, update, delete] }
{ allow: private, provider: iam, operations: [read, update, delete] }
{ allow: private, provider: userPools, operations: [read] }
]
) {
id: ID!
displayName: String!
groups: [GroupMemberLink] @connection(keyName: "byMember", fields: ["id"])
}
type Group
@model
@auth(
rules: [
{ allow: owner, ownerField: "members", operations: [create, update, delete] }
{ allow: private, provider: iam, operations: [read, update, delete] }
{ allow: private, provider: userPools, operations: [read] }
]
) {
id: ID!
name: String!
members: [String]!
associated: [GroupMemberLink] @connection(keyName: "byGroup", fields: ["id"])
}
type GroupMemberLink
@model(queries: null, subscriptions: null)
@key(name: "byGroup", fields: ["groupID", "memberID"])
@key(name: "byMember", fields: ["memberID", "groupID"])
@auth(
rules: [
{ allow: private, provider: userPools, operations: [read] }
# what am I doing wrong below?
{ allow: private, provider: iam, operations: [create, read, update, delete] }
]
) {
id: ID!
groupID: ID!
memberID: ID!
group: Group! @connection(fields: ["groupID"])
member: User! @connection(fields: ["memberID"])
}我的意图:
(create/update/delete)
我的问题:
当我从用户或组类型查询时,我的lambda函数无法读取这个关系类型/字段。用户似乎也能够创建这种类型的对象,这是我绝对不想要的。
我做错了什么?据我所知,最近增加了multi,所以这可能很棘手。
阅读这些文档对我没有多大帮助,所以我一直在尝试多种不同的规则组合,并希望其中一种方法能奏效。
Update:每当我尝试访问用户类型或组类型:Not Authorized to access items on type ModelGroupMemberLinkConnection"上的连接字段时,我都会得到这个错误,使用iam作为auth类型。
为了澄清这一点:使用认知用户池进行身份验证的用户同时拥有读/写访问权限(不应该有写访问权限),但是我使用iam的lambda函数没有读写权限。
我尝试过的事情仍然导致在使用iam进行身份验证时无法访问相关字段:
删除auth指令altogether.
@auth(rules: [{ allow: private, provider: iam, operations: [read, update, delete] }])更新:
以下是我在AppSync控制台中测试的查询:
query GetUser {
getUser(id: "funksouldev") {
id
displayName
groups {
items {
group {
id
name
}
}
}
}
}
query GetGroup($groupID: ID!) {
getGroup(id: $groupID) {
id
associated {
items {
id
member {
id
displayName
}
}
}
}
}发布于 2020-01-12 23:47:16
好吧,最后我觉得这能解决问题。
type ModelGroupMemberLinkConnection @aws_iam
@aws_cognito_user_pools
{
items: [GroupMemberLink]
nextToken: String
}https://stackoverflow.com/questions/59588247
复制相似问题