我第一次启动我的应用程序并登录时,我得到一个会话,我需要做一些查询(这是我知道谁登录的方式)。
无论如何,如果我终止应用程序并重新启动它,我会得到一个新的会话 ID。为什么?过去,我的 ios 应用程序存储了会话 cookie。我想。
我第一次启动我的应用程序并登录时,我得到一个会话,我需要做一些查询(这是我知道谁登录的方式)。
无论如何,如果我终止应用程序并重新启动它,我会得到一个新的会话 ID。为什么?过去,我的 ios 应用程序存储了会话 cookie。我想。
您需要在应用程序终止之前手动将 cookie 保存到磁盘,NSCoding
然后在应用程序启动时加载它们,如下所示:
NSData *cookiesData = [[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCookies"];
if ([cookiesData length] > 0) {
for (NSHTTPCookie *cookie in [NSKeyedUnarchiver unarchiveObjectWithData:cookiesData]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
HTTP 会话被设计为短暂的。通常,这被设置为浏览器的生命周期,或者最近设置为浏览器选项卡的生命周期。一些浏览器现在将在应用程序启动之间存储会话,只要浏览器选项卡保持打开状态,但这对用户来说是一种方便。
如果您以前的应用程序在应用程序启动和终止之间保持会话,那么这是关于如何存储会话的实现中的一个错误。
我不建议使用会话来存储长期存在的数据。为此,使用NSUserDefaults
或考虑使用 SqlLite 存储。
编辑地址评论问题:
我应该如何构建应用程序,以便用户在安装应用程序时只需登录一次。
有多种方法可以实现这一点,具体取决于您拥有系统的哪些部分。
从概念上讲,最简单的场景是您拥有 Web 服务。在这种情况下,您可以存储用户凭据,并且每次启动应用程序时,让用户登录,并像现在一样使用该会话 ID。
在为此构建 UI 时,我会有一个复选框,要求用户记住我;基本上是要求他们允许在手机上存储他们的信用。
技巧部分是如何正确保护用户凭据。