[英]What's the best way to keep ios app signed in?
我正在使用需要与服务器通信的ios应用程序。 用户首次启动该应用程序时,系统会提示他输入用户名和密码。 一旦他通过身份验证,我想让他保持登录状态,直到他明确退出为止。
在深入研究Apple文档几个小时之后,我可以指出两种实现该想法的方法:<1>使用http basic / digest身份验证。 用户通过身份验证后,我将用户名和密码保存在钥匙串中。 每当服务器需要身份验证时,通过实现connection:didReceiveAuthenticationChallenge:函数,应用程序可以加载用户名和密码,并构造合法的NSURLCredential 。 当然可以,但是每个请求都必须进行一次身份验证,并经常转移用户密码。
<2>使用http cookie当用户通过身份验证后,服务器将在cookie中使用唯一令牌进行响应。 取决于功能URL加载系统会自动发送适用于NSURLRequest的所有存储的cookie 。 我不确定用户杀死应用程序时cookie是否会丢失。
您认为这两种方法都可以吗? 哪一个更好? 还有其他方法可以做同样的事情吗?
我注意到许多客户端(twitter / facebook / ...)使用户保持登录状态,他们使用哪种方法? 谢谢;
顺便说一句,我已经在钥匙串中保存了用户名和密码,但是要保持登录状态,我认为还有更多工作要做。
我与cookie存储无关。 但是,当您在keychain
添加用户名和密码时,必须在uninstalled
应用程序时clean up
钥匙串。 否则,即使您的应用程序被卸载,它也可能保留在keychain
。 因为keychain
具有密钥对存储,但没有基于应用程序的存储。 您可以使用NSUserDefault
来存储登录详细信息。 我认为这是一种更好的方法。
试试这个,并在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"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.