session = get_current_session()
a1 = session.has_key('account.logged') # is true
session2 = Session(sid=session.sid)
a2 = session2.has_key('account.logged') # is false
为什么a2不等于a1?
解决方案:必须将其保存到数据存储区: How to get current session with only the SID?
答案 0 :(得分:1)
好问题。按会话ID(SID)检索会话要求会话存储在服务器上(在memcache或数据存储区中)。默认情况下,gae-sessions 仅将会话存储在安全的客户端Cookie中。这比将其存储到数据存储区甚至内存缓存要快得多(参见this article底部的性能比较部分)。
如果要通过SID检索会话,则必须强制将会话存储在服务器上。您可以通过关闭仅限cookie的会话(仅在需要经常通过SID检索时建议)或强制将特定会话存储在服务器端(通过传递persist_even_if_using_cookie=True
to save()
)来完成此操作。更多详情here。