Django GraphQL JWT:tokenAuth 突变 returns "str object has no attribute decode"
Django GraphQL JWT: tokenAuth mutation returns "str object has no attribute decode"
目前我运行正在从文档页面获取 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
软件包的一个未决问题,并且能够通过诉诸 PyJWT
的 1.7.0
版本来解决它。当前安装的版本是 2.0
我使用 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
我遇到了类似的问题,这显然是因为PyJWT==2.3.0
与django-graphql-jwt
不兼容,正如Dipanshu在他的回答中提到的那样,将PyJWT==2.3.0
降级为[=15=后有效].
使用以下 pip 命令检查您的虚拟环境中 PyJWT 包的版本是否大于 2.0.0
pip show PyJWT
如果大于2.0.0,使用下面的pip命令在你的虚拟环境中降级包
pip install --upgrade PyJWT==1.7.0
目前我运行正在从文档页面获取 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
软件包的一个未决问题,并且能够通过诉诸 PyJWT
的 1.7.0
版本来解决它。当前安装的版本是 2.0
我使用 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
我遇到了类似的问题,这显然是因为PyJWT==2.3.0
与django-graphql-jwt
不兼容,正如Dipanshu在他的回答中提到的那样,将PyJWT==2.3.0
降级为[=15=后有效].
使用以下 pip 命令检查您的虚拟环境中 PyJWT 包的版本是否大于 2.0.0
pip show PyJWT
如果大于2.0.0,使用下面的pip命令在你的虚拟环境中降级包
pip install --upgrade PyJWT==1.7.0