Django GraphQL JWT:tokenAuth 突变返回“str 对象没有属性解码”

问题描述

目前我正在从文档页面运行 django-graphqljwt 的基本示例。 https://django-graphql-jwt.domake.io/en/latest/quickstart.html

import graphene
import graphql_jwt


class Mutation(graphene.ObjectType):
    token_auth = graphql_jwt.ObtainjsONWebToken.Field()
    verify_token = graphql_jwt.Verify.Field()
    refresh_token = graphql_jwt.Refresh.Field()


schema = graphene.Schema(mutation=Mutation)

但是,如果我运行 tokenAuth 突变,它会在 GraphiQL 界面中引发以下错误注意,如果我输入了错误的凭据,它会抛出一个Please enter valid credentials”而不是下面的。

{
  "errors": [
    {
      "message": "'str' object has no attribute 'decode'","locations": [
        {
          "line": 2,"column": 3
        }
      ],"path": [
        "tokenAuth"
      ]
    }
  ],"data": {
    "tokenAuth": null
  }
}

解决方法

我发现这是 github 上 django-graphql-jwt 包的一个未解决的问题,并且能够通过使用 1.7.0PyJWT 版本解决它。当前安装的是版本 2.0

https://github.com/flavors/django-graphql-jwt/issues/241

,

我正在使用 django-graphql-jwt==0.2.1 没有这个问题。显然,该问题与 django-graphql-jwt 的新版本有关,现在是 0.3.0。或者,正如您提到的,您可以将 PyJWT 绑定到 1.7.0

解决方案是在您的 requirements.txt 文件中使用这些有界包,如下所示:

django-graphql-jwt==0.3.0
PyJWT==1.7.0

django-graphql-jwt==0.2.1