使用Web服务器时维护会话

时间:2012-11-08 05:57:05

标签: php android session

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

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

但问题是,当我关闭应用程序时,HttpClient对象正在按预期被销毁,因此我无法登录。

所以我用这种方式解决了这个问题:

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

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

我是以正确的方式做到的吗?我该如何解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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