【问题标题】:Maintaining Session while working with a web server在使用 Web 服务器时维护 Session
【发布时间】:2012-10-28 07:30:21
【问题描述】:

我使用最简单的方法来维护会话,即:

只需创建 1 个 HttpClient 并将其用于每次服务器调用,它将自动处理 cookie 等,

但这里的问题是,当我关闭应用程序时,HttpClient 对象正在被破坏,正如预期的那样,因此我无法登录。

所以我修好了,这样:

将用户电子邮件和密码存储在共享首选项中,每次启动应用程序时调用登录功能(这会创建一个新会话)并使用相同的 HttpClient。

这里的问题是,Web 服务器中的每个会话都有 3 年的有效期。当我创建会话时(因为每次用户启动应用程序时我都调用登录),每次用户启动应用程序时。这会导致会话重复,或者说在服务器端创建了不必要的会话。

我做对了吗?我该如何解决这个问题?

谢谢

【问题讨论】:

  • 有没有办法关闭服务器上的会话?您可以在每次关闭您的应用时执行此操作,或者如果您有权访问它,也可以更改服务器上的过期时间。
  • 你的意思是,我必须在应用关闭时注销??
  • 除非您的应用程序需要在后台运行(例如 GPS 跟踪),否则最简单的方法是在应用程序关闭时注销并在应用程序打开时登录。如果需要,您可以自动执行此操作,以免影响用户。
  • 或者如果您也可以在服务器端工作,请设置超时,之后如果会话未处于活动状态,则会自动关闭。

标签: php android session


【解决方案1】:

只需实现您自己的 CookieStore。这很简单:扩展 BasicCookieStore,对其进行实例化并将其传递到 HttpContext 中。您可以将其存储在 sqlite 数据库中,甚至只是将其转储到 xml 文件中(但 sqlite 更轻)。我有它在这里工作,但我现在没有时间清理代码。

【讨论】:

    【解决方案2】:

    除非您的应用需要在后台运行(例如 GPS 跟踪),否则最简单的方法是在应用关闭时注销并在应用打开时登录。如果需要,您可以自动执行此操作,以免影响用户。您仍然可以使用SharedPreferences作为用户电子邮件和密码,只需在应用启动时自动登录,在应用关闭时注销。另一种解决方案是降低服务器端超时,但这取决于您是否可以更改服务器设置或者是否需要这样设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2015-04-03
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多