使用flask-restx设置cookies
有没有办法用 flask-restx
设置 cookies 呢?我正在和 flask-jwt-extended
一起使用,想要有一个接口可以设置 jwt-cookie。
这是我到目前为止尝试过的:
@namespace.route("/login")
class Login(Resource):
@namespace.expect(login_model)
def post(self):
data = namespace.payload
username = data.get("username")
password = data.get("password")
user = User.query.filter_by(username=username).first()
if not user or not check_password_hash(user.password, password):
return {"message": "Unauthorized"}, 401
access_token = create_access_token(identity=user, fresh=True)
response = jsonify()
set_access_cookies(response, access_token)
return response, 200
当我向 /login
发送请求时,出现了以下错误:
TypeError: Object of type Response is not JSON serializable
当我把返回值中的 response
换成 {}
时,代码就能正常工作,所以问题似乎是 flask-restx
不支持直接返回 Response
对象。
1 个回答
0
我找到了问题出在哪儿。当你直接返回一个 Response
时,不能加状态码。最终的代码看起来是这样的:
@namespace.route("/login")
class Login(Resource):
@namespace.expect(login_model)
def post(self):
data = namespace.payload
username = data.get("username")
password = data.get("password")
user = User.query.filter_by(username=username).first()
if not user or not check_password_hash(user.password, password):
return {"message": "Unauthorized"}, 401
access_token = create_access_token(identity=user, fresh=True)
response = jsonify()
set_access_cookies(response, access_token)
return response