Flask JWT GraphQL-设置访问/刷新cookie

Flask JWT GraphQL-设置访问/刷新cookie,flask,graphql,jwt,Flask,Graphql,Jwt,set\u access\u cookies/set\u refresh\u cookies不保存cookies并引发错误: 文件“/usr/local/lib/python3.8/site packages/werkzeug/_compat.py”,第202行,在to_字节中引发类型错误(“预期字节”) GraphQL错误: { "errors": [ { "message": "Expected

set\u access\u cookies/set\u refresh\u cookies不保存cookies并引发错误:

文件“/usr/local/lib/python3.8/site packages/werkzeug/_compat.py”,第202行,在to_字节中引发类型错误(“预期字节”)

GraphQL错误:

   {
      "errors": [
       {
       "message": "Expected bytes",
       "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "auth"
      ]
    }
    ],
    "data": {
      "auth": null
     }
    }
配置:

app.config['JWT_TOKEN_LOCATION'] = ['cookies']
app.config['JWT_COOKIE_CSRF_PROTECT'] = False
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = datetime.timedelta(seconds=1800)
app.config['JWT_COOKIE_SECURE'] = False
app.config['JWT_REFRESH_TOKEN_EXPIRES'] = datetime.timedelta(days=15)
app.config['JWT_COOKIE_CSRF_PROTECT'] = True
app.config['JWT_ACCESS_CSRF_HEADER_NAME'] = "X-CSRF-TOKEN-ACCESS"
app.config['JWT_REFRESH_CSRF_HEADER_NAME'] = "X-CSRF-TOKEN-REFRESH"
auth_.py:

class AuthMutation(graphene.Mutation):
access_token = graphene.String()
refresh_token = graphene.String()
resp = graphene.String()

class Arguments:
    email = graphene.String(required=True)
    password = graphene.String(required=True)

def mutate(self, info, password, email):
    user = User.query.filter_by(email=email).first()
    payload = user.uuid

    if user and user.check_password(password):
        access_token = create_access_token(identity=payload),
        refresh_token = create_refresh_token(identity=payload)

        resp = jsonify({'Login': True})
        set_access_cookies(resp, access_token)
        set_refresh_cookies(resp, refresh_token)

        return AuthMutation(
            access_token=access_token,
            refresh_token=refresh_token,
            resp=resp
        )
    else:
        raise Exception('Authenication Failure : User is not registered')

我认为在将其发送到
set\u access\u cookies
set\u refresh\u cookies
之前,您需要对
access\u token
进行编码。试试看

set_access_cookies(resp, access_token.encode('utf-8'))
set_refresh_cookies(resp, refresh_token.encode('utf-8'))
假设您正在使用python3(从错误跟踪中),access\u令牌和refresh\u令牌将是unicode字符串,但是这些函数需要字节字符串


Ref:

我认为在将其发送到
设置访问cookies
设置刷新cookies
之前,您需要对
访问令牌
刷新令牌
进行编码。试试看

set_access_cookies(resp, access_token.encode('utf-8'))
set_refresh_cookies(resp, refresh_token.encode('utf-8'))
假设您正在使用python3(从错误跟踪中),access\u令牌和refresh\u令牌将是unicode字符串,但是这些函数需要字节字符串

参考: