使用受保护的GraphQL端点进行用户注册

时间:2018-02-02 09:24:49

标签: node.js express authentication jwt graphql

我正在使用GraphQL和Node(express)创建一个应用程序。我查看的许多教程都建议使用变异创建用户:

mutation {
  createUser(username: "johndoe", password: "Tr0ub4dor&3")
}

现在,我希望使用JSON Web Token身份验证来保护我的GraphQL端点/graphql。因此,我公开了一个不受保护的非GraphQL端点/token,它为已经在数据库中的用户生成一个令牌。然后,可以使用此令牌访问/graphql端点。

但是,新用户无法获取JSON Web令牌来访问/graphql端点,因为它尚未存在于数据库中。因此,似乎我无法使用突变创建新用户。

我确实考虑过使用viewer字段和某种genToken突变完全在GraphQL中处理身份验证;但是,"H12 error"

因此,我唯一的选择是公开第二个不受保护的非GraphQL端点,例如处理用户创建的/createuser?这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

您希望保护哪些数据不受未注册用户的影响? 与REST不同,Graphql仅对所有内容使用相同的端点。 比方说,你有todo应用程序的例子,你有查询显示注册用户已经发布的待办事项。 您可以保护get todo查询并使用令牌添加todo变异。(请查看上下文) 需要为需要保护的查询或变异添加带有jwt事物的上下文。

您可以查看此帖子以获取更多详细信息https://dev-blog.apollodata.com/authorization-in-graphql-452b1c402a9