1

我正在开发一个需要与服务器通信的 ios 应用程序。当用户第一次启动应用程序时,系统会提示他输入用户名和密码。一旦他通过身份验证,我想让他保持登录状态,直到他明确退出。

在 Apple 文档中挖掘了几个小时后,我可以指出两种方法来实现这个想法: <1> 使用 http 基本/摘要身份验证。用户通过身份验证后,我将用户名和密码保存在钥匙串中。每当服务器需要认证时,通过实现connection:didReceiveAuthenticationChallenge:函数,app 可以加载用户名和密码,并构造合法的 NSURLCredential。当然可以,但是每个请求都必须经过一次身份验证并经常传输用户机密。

<2> 使用http cookie 一旦用户通过身份验证,服务器响应cookie 中的唯一令牌。取决于特性URL 加载系统会自动发送任何适合 NSURLRequest 的存储 cookie。我不确定用户杀死应用程序时cookie是否会丢失。

你觉得这两种方法都行吗?哪一个更好?有没有其他方法可以做同样的事情?

我注意到许多客户(twitter/facebook/...)保持用户登录,他们使用什么方法?谢谢;

顺便说一句,我已将用户名和密码保存在钥匙串中,但要保持登录状态,我认为还有更多工作要做。

4

3 回答 3

0

试试这个并将您的身份验证用户名密码保存在 NSUserDefaults 中。它在全球范围内提供应用。

为了保存你的数据试试这个

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:isValid forKey:@"Username"];
[defaults setObject:accessLevel forKey:@"Password"];

为了获取数据,试试这个

NSUserDefaults *defaultsCheck = [NSUserDefaults standardUserDefaults];
NSString  * userIDCheck = [defaultsCheck objectForKey:@"Username"];
NSString *accessLevelCheck = [defaultsCheck objectForKey:@"Password"];
于 2013-04-17T05:45:03.157 回答
0

我不关心cookie存储。但是当您添加用户名和密码时keychain,您必须clean up在应用程序获取时使用钥匙串uninstalled。否则keychain,即使您的应用程序被卸载,它也可能会保留。因为keychain有密钥对存储,但没有基于应用程序的存储。您可以NSUserDefault用来存储登录详细信息。我认为这是一个更好的方法来做到这一点..

于 2013-04-16T09:53:57.897 回答
0

试试这个钥匙串:

钥匙串示例代码

你也可以使用 NSUserDefault

于 2013-04-16T09:59:10.317 回答