你如何防止人们查询他们不应该在 graphql 中看到的对象的关系?
例如,假设我们有以下数据模型。
type Board {
id: ID! @unique
name: String!
boardUserRoles: [BoardUserRole!]!
}
type BoardUserRole {
id: ID! @unique
board: Board!
user: User!
role: BoardRole!
}
type User {
id: ID! @unique
tasks: [Task!]!
userName: String! @unique
boardUserRoles: [BoardUserRole!]!
}
这是一种设置,其中有可以访问某些板的用户。并BoardUserRole
确定用户对特定表的角色。
现在,我过来询问我有权使用的董事会并查看其名称。
query {
board(where: {id: "3"}) {
id
name
}
}
那很好。但是,如果我更改查询,我可以联系系统的其他用户并查看他们的任务。我基本上可以看到与该用户相关的任何内容。
query {
board(where: {id: "3"}) {
id
name
boardUserRoles {
user {
tasks
}
}
}
}
你如何防止这种类型的查询?