比方说,我有一个包含以下字段的用户类型:GraphQL:如何跨服务器端查询字段?
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
}
不包括私人领域,但是这并不觉得枯燥你会创造许多类型的在结构上90%相似形成彼此。
是否有一个更清晰的方式来实现这一点,它不会创建不必要的类型或重复的字段?
非常感谢! –
我不敢相信这必须在需要过滤的每个领域的解决方案中处理。 –