2010-08-31 121 views
1
  1. 我正在其中 用户名和密码是必需的 所有的屏幕,使请求 服务器的IPhone应用程序,和我想的 节省 NSUserDefault的2个值,而不是通过一个 对象周围。在NSUserDefaults中保存全局值是否安全/良好实践?

  2. 我也在想,如果用户一旦已经登录, 和使用的应用程序,然后再用户 不必再次输入他/她的细节 这将是有益的。

但我很好奇,如果这将是安全的/良好的做法用于第一要求?

回答

6

我没有什么反对将这些数据保存在用户的默认值。我没有得到的是在每个请求中公开用户凭证的想法。

我建议你一次要求凭证,并与你的服务器进行身份验证并返回一个“会话令牌”。保存此令牌并使用它来验证每个请求上的用户。 (这意味着您将令牌存储在服务器上,或者您将使用算法检查令牌)

这样做,您不会始终公开用户凭据,您可以控制会话,并且可以在需要时将其终止,强制用户再次登录。

对于更复杂的实现,您可以使用Google for OAuth或XAuth以及一些相关的身份验证方法。

干杯, VFN

+0

问题是服务器没有这个“会话令牌”的机制!这就是为什么我已经走过这条路。这就是在api页面上写的“所有请求都需要验证。” – itsaboutcode 2010-08-31 00:47:52

+0

是的,但验证可以反对任何事情,不一定是登录名和密码。只有在您的情况下,您无法控制服务器,因此,在这种情况下,您需要在每次通话时发送凭证。 – vfn 2010-08-31 00:59:22

+0

邑多数民众赞成的问题,我无法控制服务器端:(并要求发送凭据与每个请求。谢谢vfn。 – itsaboutcode 2010-08-31 01:02:14

3

这是合理的保存要生存下去你的应用程序被杀害并重新启动NSUserDefault全局值(可IOS4.0下发生)。

密码应该保存在内存中(可能是单件模型对象)或钥匙串中,因为各种iTunes备份数据库可能会暴露存储在用户默认值中的东西。