【发布时间】:2017-11-22 07:38:48
【问题描述】:
假设我有一个包含以下字段的用户类型:
type User {
name: String
username: String
someOtherField1: String
someOtherField2: String
someOtherField3: String
someOtherField4: String
creditCardNumber: String
}
如果我自己查询,返回所有字段也没关系,因为信息是我的。因此,将creditCardNumber 返回给客户端并不是什么大问题。但是如果我要查询其他人,我应该只能访问返回用户的公共信息。返回creditCardNumber 会很糟糕。即使我没有在客户端上编写查询代码来执行此操作,如何防止恶意用户深入研究代码、更新客户端查询以包含 creditCardNumber 并执行它?
在 GraphQL 中跨查询实现这种级别的字段限制的最佳方法是什么?到目前为止,我对此唯一的想法是创建一个单独的 UserSearch 类型,即
type UserSearch {
name: String
username: String
someOtherField1: String
someOtherField2: String
someOtherField3: String
someOtherField4: String
}
它不包括私有字段,但是这不会让人感觉 DRY,因为您将创建许多在结构上彼此 90% 相似的类型。
有没有更简洁的方法来实现这一点,不会创建不必要的类型或重复字段?
【问题讨论】:
标签: graphql