生成在 Flask 中使用的签名会话 cookie 值

Mic*_*son 7 python cookies session flask

我正在使用另一个需要将项目注入会话的 Flask 服务器代理 Flask 服务器。

两台服务器具有相同的密钥,因此加密签名将相同。使用 Flask 和会话时,http 响应包含一个带有 的 Set-Cookie 标头session=text,其中文本是使用您的密钥签名的会话对象的编码 JSON 字符串。

本质上,我需要能够重新创建这个字符串,但我找不到这样做的接口。

Mic*_*son 11

在源代码中找到 [flask 如何做到这一点][1] 后,我最终解决了我自己的问题。我忙于工作,所以没有时间更好地解释。

from flask import Flask, session
from flask.sessions import SecureCookieSessionInterface
    
app = Flask("example")
app.secret_key = "Tom Izzo 4 President"

# 1. this is what I was looking for
session_serializer = SecureCookieSessionInterface() \
                        .get_signing_serializer(app)
    
@app.route("/")
def test():
    session["lst"] = ["a", "b", "c", "d"]

    # 2. and this is how I needed to use it
    session_cookie = session_serializer.dumps(dict(session))
Run Code Online (Sandbox Code Playgroud)

session_cookie上面的变量是使用给定 secret_key 的会话的有效 cookie 值。有了这个,我就可以将请求转发到另一个使用 secret_key 的烧瓶服务器。[1]:https : //github.com/pallets/flask/blob/0e79aba40d2497218736448ced708fcf4f8943b3/flask/sessions.py#L363