我正在使用GraphQL和Node (express)创建一个应用程序。我看过的许多教程都建议使用变异来创建用户:
mutation {
createUser(username: "johndoe", password: "Tr0ub4dor&3")
}现在,我希望使用JSON Web令牌身份验证来保护我的GraphQL端点/graphql。因此,我公开了一个未受保护的非GraphQL端点/token,它为数据库中已有的用户生成一个令牌。然后,可以使用该令牌来访问/graphql端点。
但是,新用户无法获取JSON Web令牌来访问/graphql端点,因为它还不在数据库中。因此,我似乎不能使用突变创建新用户。
我确实考虑过仅在GraphQL中使用viewer字段和某种genToken变体来处理身份验证;但是,使用this does not appear to be a good practice。
因此,我唯一的选择是公开第二个无保护的非GraphQL端点,比如处理用户创建的/createuser吗?这里的最佳实践是什么?
发布于 2018-05-25 00:22:41
您希望保护哪些数据不受未注册用户的影响?与REST不同,Graphql只对所有内容使用相同的端点。比方说,例如你必须做应用程序,你有查询来显示已经发布注册用户的todo。您可以使用token保护get todo查询和添加todo突变。(请查看上下文)此上下文使用jwt需要为您想要保护的查询或突变添加内容。
您可以查看此帖子以获取更多详细信息https://dev-blog.apollodata.com/authorization-in-graphql-452b1c402a9
https://stackoverflow.com/questions/48579500
复制相似问题