【发布时间】:2010-08-31 00:32:24
【问题描述】:
我正在制作一个 iPhone 应用程序,其中 用户名和密码是必需的 发出请求的所有屏幕 服务器,我正在考虑 将这两个值保存在 NSUserDefault 而不是传递一个 周围的物体。
我还认为如果用户登录一次会很有用, 并再次使用该应用程序然后用户 不必输入他/她的详细信息 再次。
但我很好奇将其用于第一个要求是否安全/良好?
【问题讨论】:
标签: iphone objective-c
我正在制作一个 iPhone 应用程序,其中 用户名和密码是必需的 发出请求的所有屏幕 服务器,我正在考虑 将这两个值保存在 NSUserDefault 而不是传递一个 周围的物体。
我还认为如果用户登录一次会很有用, 并再次使用该应用程序然后用户 不必输入他/她的详细信息 再次。
但我很好奇将其用于第一个要求是否安全/良好?
【问题讨论】:
标签: iphone objective-c
我没有反对将这些数据保存在用户默认值上。我没有得到在每个请求上公开用户凭据的想法。
我建议您请求一次凭据,通过您的服务器进行身份验证并返回“会话令牌”。保存此令牌并使用它来验证每个请求的用户。 (这意味着您将令牌保存在您的服务器上,或者您将使用算法检查令牌)
这样做您不会一直公开用户凭据,您可以控制会话,并且可以在需要时使会话过期,从而强制用户再次登录。
对于更复杂的实现,您可以谷歌 OAuth 或 XAuth 以及一些相关的身份验证方法。
干杯, vfn
【讨论】:
在 NSUserDefault 中保存全局值是合理的,您希望在应用程序被杀死和重新启动后仍然存在(在 iOS4.0 下可能发生)。
密码应保存在内存中(可能是单例模型对象)或钥匙串中,因为各种 iTunes 备份数据库可能会暴露存储在用户默认值中的内容。
【讨论】: