我已经使用flask-restplus和flask_jwt_extended编写了用于登录和注销的REST API,我实现了无缝工作的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