处理GraphQL / Relay中的隐私

时间:2016-06-30 11:01:48

标签: reactjs graphql relayjs graphql-js

我的用户应用程序具有许多属性,其中一些属于公共属性,有些属于默认属性,如果用户选择这样做,则可以公开。

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

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

2 个答案:

答案 0 :(得分:3)

正如DARK_DUCK已经说明的那样:您将决定在GraphQL服务器端模式的属性的resolve方法中为特定用户返回什么。

我在cookie中保存用户身份验证所需的数据。然后我将此身份验证数据传递给根值中的GraphQL架构。在私有用户数据的解析方法中,我检查访问权限并返回适当的数据(空或实际数据)。

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

答案 1 :(得分:1)

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

您可以将User模型的全局解析函数中的所有私有属性设置为null,或者在可能的privates属性中添加resolve函数。

然后用继电器取出一切。我检查您的组件是否为空值并显示您想要的内容(例如,一个Lock表示该值是私有的)

希望有所帮助