在iPhone上存储凭据的位置(用户名或userId)?

时间:2014-01-10 15:43:32

标签: ios

当我对用户进行身份验证时,我需要在设备的某个位置存储userId(主键),以便稍后可以使用它来提取与用户相关的其他信息,如“getAccounts(userId)”。

我在想我可以使用NSUserDefaults来存储userId吗?

有什么建议吗?

更新:我还需要提一下的是,userId是自动生成的,并且自动增加,如3,4,5,6,7等。

2 个答案:

答案 0 :(得分:2)

NSUserDefaults是保存快速有用信息(如用户名或各种偏好)的最简单方法。

如果您要保存密码,则需要通过Keychain Services将其存储在钥匙串中。

答案 1 :(得分:2)

保持NSUSerDefault没关系 - 但你不应该将userId保留在那里。 有些人可以操纵该数据,更改userId并控制其他人帐户。

在用户授权后,请务必保留登录名+密码或生成一些令牌,以避免在用户丢失手机时保留可能被盗的完整凭据。

此外,您需要将API扩展为始终需要令牌(或登录,passowrd)用于每个操作 - 否则很容易入侵“getAccounts(userId)”等函数

对于密码,最佳将是其他建议的钥匙串,或至少在将其保存到NSUserDefaults之前加密。

当然,你在问题中提出的建议也适用 - 但这种做法确实很糟糕,而且这些应用都不应该以这种方式构建,所以请将我的答案视为良好的实践建议。