在 GraphQL/Relay 中处理隐私

Handling Privacy in GraphQL/Relay

我有一个用户的应用程序有很多属性,其中一些是 public,一些默认是私有的,如果用户选择这样做可以变成 public。

如何处理私有属性的获取? 我的意思是,我想要这样,例如,如果我尝试获取用户的所有属性,我将获取他所有的 public 属性,以及他的私有属性的一些 null-ish 值(而不是未经授权的错误信息)。

我还想以某种方式覆盖它,以便用户可以轻松获取他的所有数据。

您的字段的隐私应该在服务器端完成。

您可以将用户模型的全局解析函数中的所有私有属性设置为空,或者在潜在的私有属性中添加解析函数。

然后通过中继获取所有内容。我是你的组件,你检查空值并显示你想要的(例如一个锁来表示该值是私有的)

希望对您有所帮助

如 DARK_DUCK 所述:您可以在 GraphQL 服务器端模式中的属性解析方法中决定 return 为特定用户做什么。

我将用户身份验证所需的数据保存在 cookie 中。然后我将此身份验证数据向下传递到根值中的 GraphQL 模式。在私有用户数据的解析方法中,我检查了访问权限和 return 适当的数据(空数据或实际数据)。

我制作了一个关于如何使用中继和 graphql 处理身份验证和私有数据的小示例存储库。有关详细示例,请参阅 this file 和 posts 属性。