我正在开发一个需要与服务器通信的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 / ...)让用户登录,他们使用什么方法? 感谢;
顺便说一下,我已经在钥匙串中保存了用户名和密码,但为了保持登录状态,我认为还有更多工作要做。
答案 0 :(得分:0)
我不关心cookie存储。但是当您向keychain
添加用户名和密码时,当应用获取clean up
时,您必须uninstalled
密钥链。否则,即使您的应用程序被卸载,它也可能会保留在keychain
中。因为keychain
具有密钥对存储,而不是基于应用的存储。您可以使用NSUserDefault
存储登录详细信息。我认为这是一个更好的方法..
答案 1 :(得分:0)
答案 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"];