保持ios app登录的最佳方法是什么?

时间:2013-04-16 09:48:33

标签: iphone ios objective-c security authentication

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

在Apple文档中挖掘了几个小时之后,我可以指出实现这个想法的两种方法: &LT 1为卤素;使用http basic / digest认证。 用户通过身份验证后,我会在钥匙串中保存用户名和密码。每当服务器需要身份验证时,通过实施 connection:didReceiveAuthenticationChallenge:功能,应用可以加载用户名和密码,并构建合法的 NSURLCredential 。当然它会起作用,但每个请求必须经过一次身份验证并经常转移用户密码。

&LT 2 - ;使用http cookie 用户通过身份验证后,服务器将在cookie中使用唯一令牌进行响应。取决于功能 The URL loading system automatically sends any stored cookies appropriate for an NSURLRequest 。我不确定用户杀死应用程序时cookie是否会丢失。

你认为这两种方法还可以吗?哪一个更好?有没有其他方法可以做同样的事情?

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试使用钥匙串:

KeyChain sample code

您也可以使用NSUserDefault

答案 2 :(得分: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"];