繁体   English   中英

保持ios应用程序登录的最佳方法是什么?

[英]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来存储登录详细信息。 我认为这是一种更好的方法。

试试这个钥匙扣:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM