сохранить токен jwt в cookie-файле во флеш-памяти Python - PullRequest
0 голосов
/ 26 октября 2018

Я написал 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 голосов
/ 26 октября 2018

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

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

, потому что jsonify уже возвращает объект ответа.

...