问题标签 [django-graphql-jwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
106 浏览

django - Django 石墨烯订阅不断加载而不向我发送数据

我按照这里的说明使用了现有的 graphen api gitHub repo。但是,我尝试了所有三个选项

  1. graphql-python/graphql-ws
  2. datavance/django-channels-graphql-ws
  3. jaydenwindle/石墨烯订阅。但他们都没有和我一起工作。
  • 问题在此处输入图像描述,如您所见,它在不发送数据的情况下永远加载。
  • 目标:我需要创建实时 grapheql api(订阅)
  • 文件:注意:在 repo 中,您将看到没有订阅代码的原始 repo。
0 投票
1 回答
508 浏览

django - 如何在 django-graphql-jwt 中配置 JWT 令牌以获取令牌中的 userId 而不仅仅是用户名?

TLDR - 但默认情况下,从后端发送的 JWT 令牌仅包含用户名。我也想要 userId。这是它当前包含的内容:-

我有一个 Django GraphQL API(使用 Graphene、django-graphql-auth、django-graphql-jwt)和一个 Angular 前端。我有完整的身份验证设置。现在我面临的问题是我将令牌存储在本地存储中,因此当用户再次打开浏览器时,我想验证该令牌并仅使用其中的信息来获取用户的 ID,然后使用它userId 来获取他们的用户个人资料信息,这是完成登录过程的重要步骤。

我不确定如何自定义有效负载以包含 userId。这样当用户在关闭后打开浏览器时,我可以简单地使用令牌中的信息来完全登录。我对 Python 和 Django 都很陌生。我在网上的任何地方都找不到详细的过程,也许我不是在寻找正确的东西或在正确的地方。详细的说明会很有帮助。

0 投票
1 回答
887 浏览

django - 带有 JWT 身份验证实现的 Django GraphQL API 仍然允许来自 Postman 的未经身份验证的请求获取数据。我该如何解决?

我构建了一个 Django API,它使用django-graphql-authdjango-graphql-jwt包来实现身份验证。我按照包的文档进行操作,一切正常,一切都在我的 Angular UI 中运行。唯一的问题是,即使是从 Postman 发出的没有 Authorization 标头的请求,也能够从 graphql API 获取数据。

这是我的 Django 项目的 settings.py

网址.py

示例查询:-

正如你所看到的,我已经按照所有必要的步骤来适应两个包中的说明。如何防止未经授权的请求访问我的数据?

更新:-

我正在使用Django-graphql-extras进行分页,在我的 Graphql api 上进行过滤。所以查询都使用该包中的内置方法。

然而,突变是手动的。

查询文件:-

示例突变代码:-

0 投票
1 回答
239 浏览

django - “错误:错误解码签名”和“变量 '$token' 从未在操作 'VerifyToken' 中使用。”

工具:Django + Next.js + Django-GraphQL-JWT

工作原理:我可以登录用户并获得一个 JWT 令牌,除了将令牌保存在 localStorage 中以供稍后检索和验证之外,我还保存了该令牌。

什么不起作用:我可以成功检索 localStorage 令牌,但是当我尝试使用库来验证服务器上的令牌时,我收到此错误:

[GraphQL error]: Message: Error decoding signature, Location: [object Object], Path: verifyToken

验证码:

突变:

架构.py:

这是我在 GraphQL 中手动尝试时会发生的情况:

如果我的突变包括令牌:

返回:

但是,如果我不包含这样的令牌:

返回:

我尝试过的其他事情:我发现一些关于 SECRET_KEY 是解码问题的参考,但我已经在我的设置中设置了它,但问题没有任何改善。我还没有找到任何其他似乎可以在这里工作的解决方案。

我也尝试过使用自定义 JWT_VERIFY 模块,但这并没有帮助我解决问题。

0 投票
0 回答
44 浏览

django - 在 azure 活动目录中访问多个 api 的最佳实践是什么

我们在 django-graphene 中创建了一个 graphql api。在这个 api 中,我们使用 django-graphql-auth 为用户提供身份验证。

我们还有 vue js 客户端应用程序,它可以让用户在我们创建的 api 的帮助下注册和登录。

但是,我们还决定将 microsoft 集成到身份平台,以便我们让用户使用他们的 microsoft 帐户登录,我们计划使用 microsoft graph。

这意味着,用户将拥有两个令牌,一个用于 microsoft graph 和一个用于我们创建的 api。

我们应该如何整合这两个api?

0 投票
1 回答
114 浏览

django - 如何在 django-graphql-jwt 中集成 Facebook 登录?

我们有一个 django 项目,它使用该Graphene-Django库在我们的项目中实现 GraphQL API。我们的移动应用程序可以访问此后端。对于应用程序的身份验证,我们使用该django-graphql-jwt库,它是 Django 中采用 GraphQL 方法的 JSON Web Token 库。

现在我们想在我们的系统中实现 Facebook 登录,并通过它在 Facebook 中进行身份验证。经过身份验证后,从移动应用程序发送到我们后端的只是用户的电子邮件。如何在django-graphql-jwt没有密码的情况下注册和验证用户?或者有更好的工作流程吗?

0 投票
0 回答
56 浏览

django - 如何将 Cognito SSO 与 Django 葡萄烯集成

我们有一个正在运行的 django 项目,它已经使用graphenegraphql_jwt(以及 django 的内部身份验证)。我们正在尝试将 SSO 与 cognito 集成到这个项目中,但是由于graphene并且graphql_jwt已经有了它们内置的身份验证机制,因此很难理解如何将 Cognito 与这些集成。我的猜测是,我主要只需要添加一个身份验证后端,它将用户设置为使用cognito. 但这会导致 graphql 的现有身份验证出现问题,并且它无法识别user已经通过身份验证。

如何将 cognito 的身份验证添加到现有graphql_jwt流程中?

0 投票
1 回答
175 浏览

django - 由 Django Channels 中间件处理的 Apollo 客户端订阅传递 JWT 令牌

我在 Vue3 应用程序上使用 Graphql 订阅和 Apollo 客户端,在我的后端应用程序中使用 Django graphQL Channels 和 DjangoGraphqlJWT 包。

我正在尝试通过 connectionParams 在 Apollo 订阅上传递 JWT 令牌。

按照这个解决方案。我实现了一个中间件。然而,Apollo 将 connectionParams 作为有效负载传递。我找不到在中间件级别访问有效负载的方法,但只能在消费者上访问。

我可以从中间件的范围参数访问查询字符串属性。但是,在订阅启动后,我找不到传递查询参数的方法。

客户端:

后端:

asgy.py

通道中间件.py

据我了解,我只能访问中间件中的查询字符串/ URL 参数,而不能访问 Apollo 有效负载。现在可以在查询字符串中传递令牌吗?但是,由于提供 Apollo 客户端时令牌可能不存在,因此需要像 connectionParams 一样重新评估它。

任何解决方法?

0 投票
0 回答
19 浏览

django - 使 updateAccount 突变中的字段可选 django graphql auth

我正在使用包django graphql auth来处理 Django/Graphql 项目中的身份验证。我正在尝试将其设为UPDATE_MUTATION_FIELDS可选,以便在使用 updateAccount 突变时不必输入它们,但没有成功。

我的相关部分settings.py如下所示:

相关models.py

所以我决定使用自定义表单将这些字段显式设置为可选:

我的用户突变看起来像:

最后,我将上面的突变用作:

当我访问 graphql URL 时,出现错误Cannot create a consistent method resolution order (MRO) for bases InputObjectType, UpdateAccountInput

我该怎么做才能使要更新的字段成为可选字段?

0 投票
1 回答
72 浏览

python - 如何解决“NoneType”对象在 Graphene-django 中没有属性“字段”

有这个突变

在执行上述突变之前graphiql,我添加了请求标头"Authorization": "JWT <token>",以便对用户进行授权。但我得到了错误graphql.error.located_error.GraphQLLocatedError: 'NoneType' object has no attribute 'fields'。删除标题时不会发生错误。当我将它包含在查询请求中时,它也可以正常工作。难道我做错了什么?我也需要授权才能发生突变。

我跟踪了 Traceback,它导致了 file .../site-packages\graphql_jwt\middleware.py。看来这是功能allow_any() 行 18中的包中的错误field = info.schema.get_type(operation_name).fields.get(info.field_name)。新手,我需要帮助。

我正在使用graphene-django==2.15.0django-graphql-jwt==0.3.4