2017-02-16 64 views
1

我正在使用另一个需要将项目注入会话的瓶服务器来代理瓶服务器。两台服务器具有相同的密钥,因此加密签名将相同。当使用Flask和会话时,http响应包含一个Session-text的Set-Cookie头,其中text是使用您的密钥签名的会话对象的编码json字符串。基本上我需要能够重新创建这个字符串,但我找不到接口来这样做。生成烧瓶中使用的签名会话cookie值

+0

我不明白你在问什么。请[edit]包含[mcve]。通过重新创建,是否将字符串解码为会话数据结构? – davidism

回答

1

我在源代码中找到how flask does this后最终解决了我自己的问题。我工作很忙,所以没有时间更好地解释。

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)) 

上述可变session_cookie是使用给定的SECRET_KEY会话有效的Cookie值。有了这个,我可以将请求转发到另一个使用secret_key的flask服务器。