簡體   English   中英

Flask-0.10中的會話cookie如何手動反序列化?

[英]How can a session cookie from Flask-0.10 be deserialized manually?

我有Flask-0.10應用程序中會話cookie的原始值。 我需要在另一個未使用Flask的應用程序中讀取會話,因此我無權訪問session代理。

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

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

但是,此方法在Flask-0.10中不再存在。 我現在如何讀取Cookie數據?

Flask-0.10切換為序列化會話危險 有關如何在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM