Сохранить токен jwt в cookie в python flask restplust для входа в api

Я написал REST API для входа и выхода с использованием flask-restplus и flask_jwt_extended, я реализовал генерацию jwt access_token, которая работает без проблем, но теперь мне нужно сохранить токен в cookie.

мой код такой:

API / пользователь / resource.py

from app.auth_helper import Auth
from flask_restplus import Resource
from flask import request

@user_api_ns.route("/login")
class LoginUser(Resource):
    post_data = request.json
    return Auth.login_user(data=post_data)

auth_helper.py

import datetime
from flask_jwt_extended import create_access_token
from flask import jsonify

def encode_auth_token(user):
    access_token = create_access_token(identity=user, fresh=True, expires_delta=datetime.timedelta(days=1, seconds=5))

class Auth(object):
    @staticmethod
    def login_user(data):
        try:
            auth_token = encode_auth_token(data.get("username"))
            if auth_token:
               response_object = jsonify({'status': 'success', 'Authorization': auth_token.decode()})
               set_access_token(response_object, auth_token)
               return response_object, 200
        except Exception as er:
            print er
            return {"status": "fail"}, 401

Но приведенный выше код дает мне ошибку:

TypeError: <Response 367 bytes [200 OK]> is not JSON serializable

если я не использую jsonify (..), я получаю ошибку dict object does not have set_cookie attribute, которая довольно очевидна, поскольку set_access_cookie ожидает, что объект ответа не является нормальным dict

1
0
1 475
1

Ответы 1

это должно быть так,

response_object = jsonify({'status': 'success', 'Authorization': auth_token.decode()})
set_access_cookies(response_object, auth_token)
return response_object

потому что jsonify уже вернул объект ответа.

Другие вопросы по теме