【问题标题】:How can a session cookie from Flask-0.10 be deserialized manually?如何手动反序列化来自 Flask-0.10 的会话 cookie?
【发布时间】:2014-11-13 14:58:25
【问题描述】:

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

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

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

然而,这个方法在 Flask-0.10 中不再存在。我现在如何读取 cookie 数据?

【问题讨论】:

    标签: python session cookies flask


    【解决方案1】:

    Flask-0.10 切换到itsdangerous 用于序列化会话。请参阅relevant source code 了解如何在 Flask 中读取会话。

    如果你有 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多