【问题标题】:Cleaning up non-expiring sessions in Google App Engine清理 Google App Engine 中未过期的会话
【发布时间】:2012-09-01 00:39:41
【问题描述】:

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

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

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

首先,这种方法有什么问题吗?有没有更好的方法来做到这一点?

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

【问题讨论】:

    标签: python google-app-engine session cookies


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 2011-06-14
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多