如何将Flask-0.10的会话cookie手动反序列化?

时间:2014-09-19 05:02:49

标签: python session cookies flask

我有来自Flask-0.10应用程序的会话cookie的原始值。我需要在另一个没有使用Flask的应用程序中读取会话,因此我无法访问session代理。

在Flask-0.9中,我可以执行以下操作:

session = SecureCookieSession.unserialize(cookie, app.secret_key)

但是,Flask-0.10中不再存在此方法。我现在如何阅读cookie数据?

1 个答案:

答案 0 :(得分:5)

Flask-0.10切换到itsdangerous以序列化会话。有关如何在Flask中读取会话的信息,请参阅relevant source code

如果你有一个由Flask的默认会话界面序列化的会话,你可以按如下方式手动阅读。

假设您的密钥为'dev',会话数据{'hello': 'world'}将序列化为 'eyJoZWxsbyI6IndvcmxkIn0.BwEv5w.o3gYYutryNy7di1E3LbJZbCFGfY'

from hashlib import sha1
from flask.sessions import session_json_serializer
from itsdangerous import URLSafeTimedSerializer

s = URLSafeTimedSerializer(
    'dev', salt='cookie-session',
    serializer=session_json_serializer,
    signer_kwargs={'key_derivation': 'hmac', 'digest_method': sha1}
)
session_data = s.loads('eyJoZWxsbyI6IndvcmxkIn0.BwEv5w.o3gYYutryNy7di1E3LbJZbCFGfY')
assert session_data['hello'] == 'world'  # True
相关问题