清理Google App Engine中的非过期会话

时间:2012-09-01 00:39:42

标签: python google-app-engine session cookies

我正在使用gae-sessions。客户端是一个iOS应用程序,我希望会话在应用程序的生命周期内持续存在(因此会话过期或无效的唯一方式是用户注销或用户删除应用程序时,另一方面会话没有到期日期)。我不认为我想使用cookies,因为cookie是短暂的(或者我应该?)

所以我正在做的是创建一个新会话,获取该会话的自动生成的SID(会话ID,随机字符串),并将该字符串发送回客户端并将其保存在那里。现在,每次用户发送请求时,会话ID也会被发送,我使用此ID获取当前会话:

# gets the session with given session id
session = gaesessions.Session(sid = session_id)

首先,这种方法有什么问题吗?有更好的方法吗?

现在,当用户注销时,很容易提交请求以使具有给定ID的会话无效。但是,如果用户删除该应用程序,我将无法获得该会话并删除它。那么我将如何清理不再有效的会话?

1 个答案:

答案 0 :(得分:1)

我想知道为什么你需要一个会话。只需将数据存储在数据存储区中的每个用户对象中。然后很容易引用该用户。我假设您已经存储了除会话之外的某种用户数据。

这个答案并没有解决问题,你永远不知道用户是否删除了应用程序,因此你将永远拥有该用户数据。这更像是一个政策问题,而不是技术问题。

如果您确实要删除用户数据,则需要设置某种策略(即,如果您未在2年内登录,我们将删除您的帐户)。在这种情况下,您的失效基本上是2年。你需要一个定期运行的cron作业,清除过期的用户(或会话)。

顺便说一下,gae-sessions包含过期会话的示例清理代码,包括cron处理程序。